StaticList.h
#include#include #include #define MAX_SIZE 20 typedef char Elemtype ; typedef struct ListNode { Elemtype data; int cur; //游标 }ListNode; typedef ListNode StaticList[MAX_SIZE]; void InitSList(StaticList &space); void Free_SL(StaticList& space, int k); int Alloc_SL(StaticList &space); void Insert(StaticList& space, const Elemtype x); void Delete(StaticList& space); void ShowList(StaticList& space);
StaticList.cpp
#include "StaticList.h"
void InitSList(StaticList &space)
{
for (int i = 1; i < MAX_SIZE - 1; ++i)
{
space[i].cur = i + 1;
}
space[MAX_SIZE - 1].cur = 0;
space[0].cur = -1;
}
void Free_SL(StaticList& space, int k)
{
space[k].cur = space[1].cur;
space[1].cur = k;
}
int Alloc_SL(StaticList &space)
{
//获取插入结点的下标
int i = space[1].cur;
if (space[1].cur != 0)
{
//更新下一个插入结点的下标
space[1].cur = space[i].cur;
}
return i;
}
void Insert(StaticList& space, const Elemtype x)
{
int i = Alloc_SL(space);
if (i == 0)
{
printf("申请结点失败!n");
return;
}
//插入的第一个结点 cur为 -1
if (space[0].cur == -1)
{
space[i].cur = -1;
}
else
{
space[i].cur = space[0].cur;
}
space[0].cur = i;
space[i].data = x;
}
void Delete(StaticList& space)
{
int i = space[0].cur;
space[0].cur = space[i].cur;
Free_SL(space, i);
}
void ShowList(StaticList& space)
{
int i = space[0].cur;
while (i != -1)
{
printf("%c--->", space[i].data);
i = space[i].cur;
}
printf("NULLn");
}



