静态链表类似于并查集,静态链表不具有分支结构。在一些不支持指针的高级语言中,使用静态链表构建单链表是一种非常巧妙的方法。
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
// 静态链表以-1作为结束标志。静态链表的修改只需要移动指针,不需要移动数据。静态链表同样是从数组下标0开始存储元素。
typedef struct node{
int data;
int next; // 静态链表以整形数据存储数组下标
}SLinkList[MaxSize];
void TraverseL(struct node *L){
int i=0;
while(i!=-1){
printf("%d\n",L[i].data);
i=L[i].next;
}
}
int main(){
SLinkList L; // 数组名,本来就是地址
L[0].data=1; L[0].next=3;
L[1].data=4; L[1].next=1;
L[2].data=9; L[2].next=4;
L[3].data=3; L[3].next=2;
L[4].data=8; L[4].next=-1; // 静态链表以-1作为结束标志
TraverseL(L);
return 0;
}
···