目录
http://c.biancheng.net/view/3334.html
线性表,全名为线性存储结构。
使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。
根据存储结构:顺序存储结构 和 链式存储结构。
如何使用顺序表
step 1. 申请物理空间
- 申请足够大小的物理空间;
- 顺序表申请的存储容量;【为了方便后期使用表中的数据】
- 顺序表的长度,也就是表中存储数据元素的个数;【为了方便后期使用表中的数据】
typedef struct Table{
int * head; //声明了一个名为head的长度不确定的数组,也叫“动态数组”
int length; //记录当前顺序表的长度
int size; //记录顺序表分配的存储容量
}table;
step 2. 初始化顺序表
只要主函数调用 initTable 语句,就可以成功创建一个空的顺序表。即 table t = initTable();
#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;
}
step 3. 调用
#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;
}