#include <stdio.h>
#define OK 1
#define ERROR 0
#define FALSE 0
#define TRUE 1
#define MAXN 1000
typedef struct elem {
int n;
int nest;
}elem;
elem splist[MAXN];
int InitList(elem* L) {
if (L == NULL) return ERROR;
L->nest = 1;
L->n = 0;
for (int i = 1; i <= 999; i++) {
(L + i)->n = 0;
(L + i)->nest = 0;
}
return OK;
}
int CreateList(elem* L) {
if (L == NULL) return ERROR;
printf("请输入元素个数:");
int n = 0, m, i = 1;
scanf("%d", &n);
L->nest = n + 1;
(L + MAXN - 1)->nest = 1;
while (i<=n) {
scanf("%d", &m);
(L + i)->n = m;
(L + i)->nest = i + 1;
i++;
}
(L + n)->nest = 0;
return OK;
}
int AddList(elem* L, int i, int n) {
if (i <= 0 || L==NULL) return ERROR;
int j = 0, p = MAXN - 1, q = (L + MAXN - 1)->nest;
while (j < i - 1 && (L+p)->nest != 0) {
j++;
p = (L + p)->nest;
}
if (j < i - 1) return ERROR;
int des = L->nest;
(L + des)->n = n;
(L + des)->nest = (L + p)->nest;
(L + p)->nest = des;
if (i == 1) (L + MAXN - 1)->nest = i;
while ((L + q)->nest != 0) {
q = (L + q)->nest;
}
int sor = 1;
while ((L + sor)->nest) {
if ((sor + 1) == q) sor += 2;
else sor++;
}
L->nest = sor;
return OK;
}
int DeleteList(elem* L, int i) {
if (i <= 0 || L == NULL) return ERROR;
int j = 0, p = MAXN - 1;
while (j < i - 1 && (L+(L + p)->nest)->nest != 0) {
j++;
p = (L + p)->nest;
}
if (j < i - 1) return ERROR;
int q = (L + p)->nest;
(L + p)->nest = (L + (L + p)->nest)->nest;
(L + q)->nest = 0;
return OK;
}
int LengthList(elem* L) {
if (L == NULL) return ERROR;
int i = 0, p = MAXN - 1;
while ((p = (L + p)->nest) != 0) {
i++;
}
return i;
}
int EmptyList(elem* L) {
if (L == NULL) return -1;
if ((L + MAXN - 1)->nest == 0) return TRUE;
else return FALSE;
}
int SearchList(elem* L, int i, int* e){
if (L == NULL) return ERROR;
int j = 0, p = MAXN - 1;
while (j < i && (L + p)->nest != 0) {
j++;
p = (p + L)->nest;
}
if (j < i - 1) return ERROR;
*e = (L + p)->n;
return OK;
}
int ClearList(elem* L) {
if (L == NULL) return ERROR;
int p =(L + MAXN - 1)->nest, q = MAXN - 1;
while (q != 0) {
q = (L + p)->nest;
(L + p)->nest = 0;
p = q;
}
L->nest = 0;
(L + MAXN - 1)->nest = 0;
return OK;
}
int main()
{
return 0;
}