其实这篇文章不是什么重点内容,如果前面的链表理解了可以直接跳过不看。
当语言不直接或者间接提供指针的时候就需要使用静态数组了。其实最核心的思想就是用数组来代替指针,具体做法如下。
首先这里使用的数组是结构体数组,数组元素有两个元素域,data
和cur
,前者存放数据,后者相当于单链表中的next
指针,指示下一个地址或者说数组下标。
#define MAXSIZE 1000
typedef struct{
ElemType data;
int cur;
}Component, StaticLinkList[MAXSIZE];
声明出来的数组里面第0个和最后一个元素不保存数据,剩下的未被使用的数组元素称为备用链表。最后大概结构是这样的:
初始化代码:
#define MAXSIZE 1000
typedef struct{
ElemType data;
int cur;
}Component, StaticLinkList[MAXSIZE];
Status InitList(StaticLinkList space){
for(int i; i<MAXSIZE-1; i++){
space[i].cur = i+1; // 指向下一个结点
}
space[MAXSIZE-1].cur = 0; // 指向回头结点
return