线性表的静态分布是基于数组的,故struct 定义时将其data定义数组,而动态基于malloc,故data定义应为指针类型。
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct
{
ElemType* data;
int length,
number;
}SqList;
void printfSqlist(SqList L)
{
for (int i = 0;i < L.length;i++)
{
printf("%d\n", *L.data);
L.data++;
}
}
int main(void)
{
SqList L;
L.length = 10;
L.number = 10;
L.data = (ElemType*)malloc(L.number * sizeof(ElemType));
int* a = L.data;
for (int i = 0;i < L.number;i++)
{
*a = i;
a++;
}
printfSqlist(L);
return 0;
}
其中,值得注意的是指针的应用,如果在下面代码块未使用a指针代替对应,则我们的输出函数中L中的data指针将从我们的data[number]位置开始,导致输出错误。
int* a = L.data;
for (int i = 0;i < L.number;i++)
{
*a = i;
a++;
}
其中的for循环也可以会用scanf函数进行人机交互对对应动态分配部分进行赋值,不再赘述。