在建立顺序表时,除了预先申请内存空间,还需要实时记录顺序表的长度和顺序表本身申请的内存大小,便于后期对顺序表中的数据元素进行调取。因此在建立顺序表之前,要自定义顺序表中单个结点的结构,实现代码如下:
typedef struct Table{
int * head;//声明了一个名为head的长度不确定的数组,也叫“动态数组”
int length;//记录当前顺序表的长度
int size;//记录顺序表分配的存储容量
}table;
建立顺序表的过程,也就是在预先申请内存空间的同时,给变量 size 和 length 赋初值的过程,其实现代码为:
table initTable(){
table t;
t.head=(int*)malloc(Size*sizeof(int));//构造一个空的顺序表,动态申请存储空间
if (!t.head) //如果申请失败,作出提示并直接退出程序
{
printf("初始化失败");
exit(0);
}
t.length=0;//空表的长度初始化为0
t.size=Size;//空表的初始存储空间为Size
return t;
}
顺序表建立完成后,即可使用顺序表存储数据,也就是对顺序表进行初始化的过程,若使用刚建立的顺序表存储 {1,2,3,4},其完整实现代码为:
#include
#include
#define Size 4
typedef struct Table{
int * head;
int length;
int size;
}table;
table initTable(){
table t;
t.head=(int*)malloc(Size*sizeof(int));
if (!t.head)
{
printf("初始化失败");
exit(0);
}
t.length=0;
t.size=Size;
return t;
}
void displayTable(table t){
for (int i=0;i
printf("%d",t.head[i]);
}
printf("\n");
}
int main(){
table t1=initTable();
for (int i=1; i<=Size; i++) {
t1.head[i-1]=i;
t1.length++;
}
printf("顺序表为:\n");
displayTable(t1);
return 0;
}
输出结果:
顺序表为:
1234