顺序表(顺序存储结构)及初始化过程详解
自定义顺序表,C 语言实现代码如下:
typedef struct Table{ int * head;//声明了一个名为head的长度不确定的数组,也叫“动态数组” int length;//记录当前顺序表的长度 int size;//记录顺序表分配的存储容量 }table;
注意,head 是我们声明的一个未初始化的动态数组,不要只把它看做是普通的指针。
接下来开始学习顺序表的初始化,也就是初步建立一个顺序表。建立顺序表需要做如下工作:
- 给 head 动态数据申请足够大小的物理空间;
- 给 size 和 length 赋初值;
因此,C 语言实现代码如下:
#define Size 5 //对Size进行宏定义,表示顺序表申请空间的大小 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; }
扩展:malloc和free 解释: https://www.cnblogs.com/CheeseIce/p/10846449.html
添加一些元素,C 语言实现代码如下:
#include <stdio.h> #include <stdlib.h> #define Size 5 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<t.length;i++) { printf("%d ",t.head[i]); } printf("\n"); } int main(){ table t=initTable(); //添加:向顺序表中添加元素 for (int i=1; i<=Size; i++) { t.head[i-1]=i; t.length++; } printf("顺序表中存储的元素分别是:\n"); displayTable(t); return 0; }