#include<iostream>静态链表
#include<cstdio>
#define OK 1
#define ERROR 0
#define MAXSIZE 1000
using namespace std;
typedef int ElemType;
typedef int Status;
/*线性表的静态链表结构*/
typedef struct
{
ElemType date;
int cur; //游标
}Component,StaticLinkList[MAXSIZE];
/*求静态链表的长度*/
int ListLength(StaticLinkList L)
{
int j = 0;
int i = L[MAXSIZE - 1].cur;
while (i)
{
i = L[i].cur;
j++;
}
return j;
}
/*若备用空闲链表非空,则返回分配的结点下标,否则返回0*/
int Malloc_SSL(StaticLinkList space)
{
int i = space[0].cur;
if (space[0].cur)
space[0].cur = space[i].cur;
return i;
}
/*将一维数组space中各分量链成一个备用链表,space[0],cur为头指针,"0"表示空指针*/
Status InitList(StaticLinkList space)
{
int i;
for (i = 0; i < MAXSIZE - 1; i++)
space[i].cur = i + 1;
space[MAXSIZE - 1].cur = 0;
return OK;
}
/*将下标为k的空闲结点回收到备用结点里*/
void Free_SSL(StaticLinkList space, int k)
{
space[k].cur = space[0].cur;
space[0].cur = k;
}
/*静态链表的插入操作*/
Status ListInsert(StaticLinkList L, int i, ElemType e)
{
int j, k, l;
k = MAXSIZE - 1;
if (i<1 || i> ListLength(L) + 1)
return ERROR;
j = Malloc_SSL(L);
if (j)
{
L[j].date = e;
for (l = 1; l <= i - 1; l++)
k = L[k].cur;
L[j].cur = L[k].cur;
L[k].cur = j;
return OK;
}
return ERROR;
}
/*静态链表的删除操作*/
Status ListDelete(StaticLinkList L, int i)
{
int j, k;
if (i<1 || i>ListLength(L));
return ERROR;
k = MAXSIZE - 1;
for (j = 1; j <= i + 1; j++)
k = L[k].cur;
L[k].cur = L[j].cur;
Free_SSL(L,j);
}
int main()
{
return 0;
}