#include <stdio.h>
#include <stdlib.h>
#define Size 5 //对Size进行宏定义,表示顺序表申请空间的大小
/*
申请足够大小的物理空间之外,为了方便后期使用表中的数据,顺序表还需要实时记录以下 2 项数据:
顺序表申请的存储容量;
顺序表的长度,也就是表中存储数据元素的个数;
*/
typedef struct Table {
int *head; //声明了一个名为head的动态数组(不确定大小长度)
int length; //记录数组长度
int size; //记录顺序表分配存储容量
} table; //因为使用了typedef 这里的table实际上代表着struct Table
//注意这里定义的 * head 是表示数组首元素地址。为的就是定义一个数组长度不被限制死的动态数组
table initTable() { //定义一个函数,新建初始化顺序表
table t; //使用上面的结构体模型(主要是数组)定义一个顺序表t
t.head = (int *)malloc(Size * sizeof(
int)); //够造一个空的顺序表,动态申请存储空间,head不是“首”的意思,而是前面定义的数组
if (!t.head) { //如果没有初始化成功
printf("初始化失败");
exit(0); //正常退出程序
}
t.length = 0; //空表的长度初始化为0
t.size = Size; //空表的初始存储空间为Size
return t; //返回成功定义初始化后的顺序表
}
//输出顺序表中元素的函数
void displayTable(table t) {
for (int i = 0; i < t.length; i++) {
printf("%d ", t.head[i]);
}
printf("\n");
}
int main() {
table t = initTable();
//向顺序表中添加元素
printf("输入顺序表元素为:");
for (int i = 1; i <= Size; i++) {
int m;
scanf("%d", &m);
t.head[i - 1] = m;
t.length++;
}
printf("顺序表中存储的元素分别是:\n");
displayTable(t);
return 0;
}
顺序表动态分盆
最新推荐文章于 2023-07-26 21:47:37 发布