#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define TRUE 1
#define FLASE 0
#define ERROR 0
typedef struct elem {
int n;
}elem;
typedef struct splist {
elem data;
splist* nest;
}splist,*list;
int InitList(list &L) {
L = (list)malloc(sizeof(splist));
if (L == NULL) return ERROR;
L->data.n = 0;
L->nest = L;
return OK;
}
int CreateList(list &L) {
L = (list)malloc(sizeof(splist));
if (L == NULL) return ERROR;
L->nest = L;
list p;
int n = 0, m = 0;
printf("请输入要加入的元素个数:");
scanf("%d", &n);
while (n--) {
p = (list)malloc(sizeof(splist));
scanf("%d", &m);
p->nest = L->nest;
L->nest = p;
L = p;
p->data.n = m;
}
return OK;
}
int AddList(list &L,int i,int n){
if (i <= 0) return ERROR;
int j = 0;
list p = L->nest;
while(j<i-1 && p!=L) {
p = p->nest;
j++;
}
if (j < i-1) return ERROR;
list s = (list)malloc(sizeof(splist));
s->data.n = n;
s->nest = p->nest;
p->nest = s;
if (p == L) L = s;
return OK;
}
int DeleteList(list &L, int i) {
if (i <= 0) return ERROR;
int j = 0;
list p = L->nest;
while (j < i-1 && p->nest != L) {
p = p->nest;
j++;
}
if (j < i - 1) return ERROR;
list q = p->nest;
p->nest = q->nest;
if (q == L) L = p;
free(q);
return OK;
}
int LengthList(list &L) {
int i = 0;
list p = L->nest;
while (p != L) {
p = p->nest;
i++;
}
return i;
}
int EmptyList(list &L) {
if (L->nest == L) return TRUE;
return FLASE;
}
int SearchList(list &L,int i, elem* e) {
if (i <= 0) return ERROR;
int j = 0;
list p = L->nest;
while (j < i && p != L) {
p = p->nest;
j++;
}
if (j < i) return ERROR;
e->n = p->data.n;
return OK;
}
int ClearList(list &L) {
list s = L->nest;
list p = L->nest->nest,q;
while (s->nest != s) {
q = p->nest;
L->nest->nest = q;
free(p);
p = q;
}
L = s;
return OK;
}
int DestoryList(list &L) {
list s = L->nest;
list p = L->nest->nest, q;
while (s->nest != s) {
q = p->nest;
L->nest->nest = q;
free(p);
p = q;
}
L = s;
free(L);
return OK;
}
int ContactList(list &a, list &b) {
list s1 = b->nest, s2 = a->nest;
list p = b->nest->nest;
list q = NULL;
while (s1->nest != s1) {
q = p->nest;
a->nest = p;
p->nest = s2;
a = p;
s1->nest = q;
p = q;
}
b = NULL;
free(s1);
return OK;
}
int main()
{
return 0;
}