结构体
struct Node
{
Elemtype data;
int next;
};
typedef struct Node SLinkList[MAXSIZE];
初始化
void InitList(SLinkList L)
{
L[0].next = -1; //-1表示为尾
for(int i = 1; i < MAXSIZE; ++i)
L[i].next = 0; //next为0表示该结点为空
}
判空
bool Empty(SLinkList L)
{
if(L[0].next == -1);
return true;
return false;
}
头插
int index = 1;
//以0作为头结点
bool HeaderInsert(SLinkList L, Elemtype e)
{
if(index == MAXSIZE)
return false;
L[index].data = e;
L[index].next = L[0].next;
L[0].next = index++;
return true;
}
插入
在结点p后插入结点s
void Insert(SLinkList L,int p,int s)
{
L[s].next = L[p].next;
L[p].next = s;
}
删除
删除结点p后的结点
bool Delete(SLinkList L, int p)
{
if(L[p].next == 0) return false; //相当于p==NULL
int q = L[p].next;
if(L[q].next == 0) return false; //相当于q==NULL
L[p].next = L[q].next;
return true;
}
遍历
for(int i = L[0].next; i != -1; i = L[i].next)
printf("%d ", L[i].data);