(1)线性表定义:具有相同数据类型的n个数据元素的有限序列,n为表长,n=0表示空表。
(2)静态分配:
//顺序表的静态分配
#include<stdio.h>
#define MaxSize 10 //定义表的最大长度
typedef struct{ //用typedef struct可简单理解为是为了使用结构体方便
int date[MaxSize]; //用静态的数组存储数据元素
int length; //顺序表的当前长度
}; SqList; //静态分配的类型定义
void InitList(SqList &L){ //L就是顺序表
for(int i=0;i<MaxSize;i++){
L.data[i]=0; //将所有数据设置为默认初始值
}
l.length=0;
}
int main(){
SqList L;//声明一个顺序表
InitList(L);//初始化一个顺序表
for(int i=0;i<MaxSize;i++){
printf("data[%d]=%d\n",i,L,data[i]);
}
return 0;
}
(3)动态分配
//顺序表的动态分配
#include<stdio.h>
#include<stdlib.h>//后续所用函数malloc,free的头文件
#define InitSize 10//默认的最大长度
typedef struct{
int *data;//只是动态分布数组的指针
int MaxSize;//顺序表的最大长度
int length;//顺序表的当前长度
}SeqList;//初始化
void InitList(SeqList &L){
L.data=(int*)malloc(InitSize*sizeof(int));
L.length=0;
L.MaxSize=InitSize;
} //用malloc函数申请一片连续的空间
void IncreaseSize(SeqList &L,int len){
int *p=L.data;
L.data=(int*)malloc((L.MaxSize+len)*sizeof(int));//增加动态数组的长度
for(int i=0;i<L.length;i++){
L.data[i]=p[i];//将数据复制到新区域
}
L.MaxSize=L.MaxSize+len;//顺序表最大长度增加len
free(p);//释放原来的内存空间
}
int main(void){
SeqList L;//声明一个数组
InitList(L);//初始化顺序表
IncreaseSize(L,5);
return 0;
}