一、线性表的顺序储存(连续)表示
顺序存储的定义:逻辑上相邻的数据元素存储在物理上相邻的存储单位中存储结构。
二、线性表的顺序表示和实现
1、线性表存储空间分配
#define List_size 100 //存储空间初始分配量
typedef int Elemtype;
// 静态分配
typedef struct {
Elemtype data[List_size];
int length; //当前长度
}SL;
//动态分配
typedef struct {
Elemtype* data;
int length;
}SqL;
表中的内容 | a | b | c | …… |
数组的下标 | 0 | 1 | 2 | …… |
(头文件)
#pragma once
#include<iostream>
#include<malloc.h>
using namespace std;
# define Maxsize 100
typedef int Elemtype;
typedef int status;
typedef struct {
Elemtype data[Maxsize];
int length;
}Sqlist;
//初始化
Sqlist* Init_sql() {
Sqlist* L;
L = (Sqlist*)malloc(sizeof(Sqlist));
if (L->data != NULL) {
L->length =0;
cout << "ok";
}
return L;
}
//创建顺序表函数
void Creatlist(Sqlist *L,int n,Elemtype num){
if(n<0||n>Maxsize) {
cout<<"fail";
}
L->data[n]=num;
L->length++;
}
//清空线性表
void Destroylist(Sqlist*L) {
L->length = 0;
}
//插入元素
void Getelem(Sqlist* L, int i, Elemtype e) {
int j;
if (L->length<1 || i>L->length + 1) {
cout << "i不合法";
}
if (L->length >= Maxsize) {
cout << "错误";
}
for (j = L->length ; j >i-1; j--) {
L->data[j+1] = L->data[j];
L->data[i - 1] = e;
L->length++;
cout << "ok";
}
}
//求线性表L的长度
int Getlength(Sqlist *L) {
return L->length;
}
//查找元素
int Locatelem(Sqlist*L,Elemtype e) {
for(int i=0;i<L->length;i++){
if(e==L->data[i])
return i+1;
}
}
#include "FileName.h"
int main() {
Sqlist *L=Init_sql();
/*
for(int i=0;i<5;i++){
cin>>L->data[i];
}*/
// int sum=Getlength(L);
cout<<'\n';
Creatlist(L,1,1);
Creatlist(L,2,8);
Getelem(L, 1, 4);
Getelem(L, 3, 5);
Getelem(L, 4, 6);
for(int i=0;i<L->length;i++){
cout<<L->data[i];
cout<<'\n';
}
int sum=Getlength(L);
cout<<sum;
return 0;
}
这是我看网课后整理的,感觉不是特别好,其中遇到了许多问题,比如系统找不到该文件……,我最高兴的是最后运行成功了。我现在还是小白,感谢大家支持!!
标签:typedef,顺序,int,Elemtype,length,Sqlist,数据结构,data From: https://blog.csdn.net/2301_79253162/article/details/137285607