1. 背景说明
图 2.10(b) 展示了图 2.10(a) 所示线性表在插入数据元素 “SHI” 和删除数据元素 “ZHENG” 之后的状况。
为了和指针型描述的线性链表相区别,我们给这种用数组描述的链表起名叫静态链表。
2. 示例代码
/* 静态链表示例源文件 */
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100 /* 链表的最大长度 */
#define N 6
typedef char ElemType[N];
typedef struct {
ElemType data;
int curr;
} SLinkList[MAXSIZE];
int main(void)
{
SLinkList S = { { "", 1 }, { "ZHAO", 2 }, { "QIAN", 3 }, { "SUN", 4 }, { "LI", 5 },
{ "ZHOU", 6 }, { "WU", 7 }, { "ZHENG", 8 }, { "WANG", 0 } };
int i = S[0].curr;
while (i) {
printf("%s ", S[i].data);
i = S[i].curr;
}
printf("\n");
S[4].curr = 9;
S[6].curr = 8;
S[9].curr = 5;
strcpy_s(S[9].data, sizeof(ElemType), "SHI");
i = S[0].curr;
while (i) {
printf("%s ", S[i].data);
i = S[i].curr;
}
printf("\n");
return 0;
}
3. 输出示例