#include <stdio.h>
#define MAXSIZE 20
typedef int T;
typedef struct
{
T data;
int cur;
}StaticList[MAXSIZE];
int LengthList(StaticList L)//数据个数
{
int i = 0;
int j = L[MAXSIZE - 1].cur;
while (i)
{
i = L[i].cur;
j++;
}
return j;
}
bool InitStList(StaticList space)
{
for (int i = 0; i < MAXSIZE; i++)
space[i].cur = i + 1;
space[MAXSIZE - 1].cur = 0;
return true;
}
int Malloc(StaticList space)//若备用空间链表非空,则返回分配的结点下标
{
int i = space[0].cur;
if (space[0].cur)
space[0].cur = space[i].cur;
return i;
}
void Free(StaticList space, int k)//将下标为k的空闲结点回收到备用链表
{
space[k].cur = space[0].cur;
space[0].cur = k;
}
bool InterList(StaticList L, int i,T val)//在L中第i个元素之前插入新的数据元素
{
int j, k, l;
T e;
k = MAXSIZE - 1;
if (i<i || i>LengthList(L) + 1)
return false;
j = Malloc(L);
if (j)
{
L[j].data = val;
for (l = 1; l <= i - 1; l++)
k = L[k].cur;
L[j].cur = L[k].cur;
L[k].cur = j;
return true;
}
return false;
}
void Show(StaticList L)//遍历
{
int i = L[MAXSIZE - 1].cur;
while (i)
{
printf("%d ", L[i].data);
i = L[i].cur;
}
printf("\n");
}
bool DeleteList(StaticList L, int i)//删除在L中的第i个数据元素
{
int j, k;
if (i<1 || i>LengthList(L))
return false;
k = MAXSIZE - 1;
for (j = 1; j <= i - 1; j++)
k = L[k].cur;
j = L[k].cur;
L[k].cur = L[j].cur;
Free(L, j);
return true;
}
int main()
{
return 0;
}
静态链表
最新推荐文章于 2022-05-03 20:27:49 发布