含义:用数组描述的链表叫做静态链表。
静态链表实际上是为给没有指针的高级语言设计的一种实现单链表的方法
结构
typedef struct {
int data;//数据域
int cur;//游标
}COMPONENT,STATICLIST[MAXSIZE];
由data和cur两个数据域组成,数据域data用来存放数据,cur相当于单链表的指针域,数组的第一个元素和最后一个元素不存储数据,把未被使用的数组元素成为备用链表。数组的第一个元素,即下标为0的元素的cur存储备用链表的第一个节点的下标,而数组最后一个元素的cur则存放第一个数值的元素的下标。如下图所示:
1、创建静态链表
void creatList(STATICLIST space){
int i;
//设置静态链表的cur
for(i=0;i<MAXSIZE-1;i++)
space[i].cur=i+1;
//当静态链表为空时,最后一个元素的cur设置为零
space[MAXSIZE-1].cur=0;
}
先设置静态链表的cur(相当于单链表的指针域),当静态链表为空时,设置最后一个元素的cur为0。
2、初始化静态链表
void initList(STATICLIST space,int len){
int i;
//临时保存初始化的值
int temp;
//输入的数字超出范围时
if(len<1||len>MAXSIZE-2){
printf("初始化的个数已经超出了数组的长度,请重新输入len=");
scanf("%d",&len);
}
//输入初始化的值 ,下标为1的数组开始存储数据
for(i=1;i<=len;i++){
printf("请输入第%d个初始化的值:",i);
scanf("%d",&temp);
space[i].data=temp;
}
//初始化数值以后,将数组第一个元素的cur存放备用链表的第一个节点的下标
space[0].cur=len+1;
//数组最后一个元素的cur存放一个有数值的数组元素的下标