一、线性表的含义
线性表又称线性存储结构,线性表是具有相同数据类型的n(n≥0)个数据元素的有限 序列,其中n为表长,当n = 0时线 性表是一个空表。若用L命名线性表,则其一般表示为
L = (a1, a2, … , ai , ai+1, … , an)
ai是线性表中的“第i个”元素线性表中的位序 a1是表头元素;
an是表尾元素。 除第一个元素外,每个元素有且仅有一个直接前驱;
除最后一个元素外,每个元素有且仅 有一个直接后继。
二、初始化线性表
首先定义一个结构体来表示线性表。
//定义线性表的最大容量
#define MaxSize 10
typedef struct {
int data[MaxSize]; //存储线性表中的元素
int length; //记录线性表的长度
} SqList;
我们尝试初始化一个线性表,初始状态的线性表里面是没有元素,所以我们只需将线性表的长度置0即可。
void Init_SqList(SqList *L) {
L->length = 0;
}
三、线性表的添加元素
创建成功之后我们便可以向线性表中添加元素。
SqList *Create_SqList(SqList *L) {
int val = -1;
int i = 0; //创建数组的下标,从0开始计数
//添加循环,以便可以动态添加元素
while (true) {
printf("请输入元素:");
scanf("%d", &val);
if (val == -1) { //判断结束标志,表示此次元素输入完成
break;
}
L->data[i] = val; //将输入的元素添加到线性表中
L->length++; //同时增加线性表的长度
i++; //数组下标也增加
}
return L;
}
线性表中元素的位置是从“1”开始计数,但是数组下标是从“0”开始的,这里一定要注意区分。
四、线性表元素的打印
添加成功后,我们现在打印线性表,可以添加一个for循环,依次遍历线性表中的元素即可。
void PrintSqList(SqList *L){
int i;
for(i = 0; i < L->length; i++){
printf("%d ",L->data[i]);
}
printf("\n线性表的长度为:%d\n",L->length);
}
接下来我们在main函数中调用以上函数。
int main() {
SqList L;
SqList *SP;
SP = &L;
Init_SqList(SP);
PrintSqList(Create_SqList(SP));
return 0;
}
SqList L; 表示创建了一个名为L的SqList结构体变量。结构体SqList可能包含了一些字段或成员变量,用来存储和管理数据。通过这个变量L,可以对SqList结构体进行操作,比如访问和修改其中的字段,进行插入、删除、查找等操作。
SqList *SP;:声明了一个指向SqList结构体的指针变量SP。
SP = &L;:将变量L的地址赋值给指针变量SP,即让指针SP指向SqList结构体变量L。可以通过指针变量SP来操作SqList结构体变量L,比如访问和修改L中的字段,进行各种操作。
例如,将 {10,20,30,40,50} 存储到顺序表中,其运行结果如下:
10 20 30 40 50
线性表的长度为:5