静态链表的基本操作包括建立与输出,删除与插入操作与单链表类似,麻烦的点在于每次遍历都要建立两个临时变量,还要特殊判断第一个节点,并将删除后的节点再次初始化其游标的值,就不写了
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
int cur;
}Node;
#define MAXSIZE 1000
typedef Node staticlist[MAXSIZE];
void initlist(staticlist& L);
void Insert(staticlist L);
void showlist(staticlist L);
int main()
{
staticlist L;
initlist(L);
while (1)
{
Insert(L);
showlist(L);
}
return 0;
}
void initlist(staticlist& L)
{
int i, j, k;
for (i = 2; i < MAXSIZE; i++)
{
L[i].cur = i + 1;
}
L[i].cur = 0;
L[0].cur = -1;
L[1].cur = 2;
}
void Insert(staticlist L)
{
int i;
printf("please input the elem to insert:");
scanf_s("%d", &i);
int j= L[1].cur;
L[j].data = i;
L[1].cur = j + 1;
if (L[1].cur != MAXSIZE)
{
if (L[0].cur != -1)
{
L[j].cur = L[0].cur;
}
else
L[j].cur = 0;
L[0].cur = j;
return ;
}
else
{
printf("ROM NOT ENOUGH");
return ;
}
}
void showlist(staticlist L)
{
int i = L[0].cur;
printf("the staticlist is :");
while (i != 0)
{
printf("%d ", L[i].data);
i = L[i].cur;
}
printf("\n");
return;
}