#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 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));
L->nest = L;
L->data.n = 0;
return OK;
}
int CreateList(list &L) {
InitList(L);
printf("请输入你要输入元素的个数:");
list p,ps=L;
int n = 0;
scanf("%d", &n);
for (int j = 0; j < n; j++) {
int m = 0;
scanf("%d", &m);
p = (list)malloc(sizeof(splist));
p->data.n = m;
p->nest = ps->nest;
ps->nest = p;
ps = p;
}
return OK;
}
int AddList(list &L,int i,int n) {
list p, k = L;
if (i <= 0) return ERROR;
for (int j = 1; j <=i - 1; j++) {
k = k->nest;
if (k == L) return ERROR;
}
p = (list)malloc(sizeof(splist));
p->data.n = n;
p->nest = k->nest;
k->nest = p;
return OK;
}
int DeleteList(list &L, int i) {
if (i <= 0) return ERROR;
list ps, k = L;
for (int j = 1; j <= i - 1; j++) {
k = k->nest;
if (k->nest == L) return ERROR;
}
ps = k->nest;
k->nest = k->nest->nest;
free(ps);
return OK;
}
int LengthList(list &L) {
int length = 0;
list k = L->nest;
while (k != L) {
length++;
k = k->nest;
}
return length;
}
int EmptyList(list &L) {
if (L->nest == L) return TRUE;
return FALSE;
}
int SearchList(list &L, int i, elem* e) {
if (i <= 0) return ERROR;
list k = L;
for (int j = 1; j <= i ; j++) {
k = k->nest;
if (k == L) return ERROR;
}
e->n = k->data.n;
return OK;
}
int ClearList(list &L) {
list ps,k=L->nest;
while (k != L) {
ps = k;
L->nest = k->nest;
k = k->nest;
free(ps);
}
return OK;
}
int DestoryList(list &L) {
list ps, k = L->nest;
while (k != L) {
ps = k;
L->nest = k->nest;
k = k->nest;
free(ps);
}
free(L);
return OK;
}
int ContactList(list &a, list &b) {
if (EmptyList(b)) return ERROR;
list ps_a=a->nest, ps_b=b->nest;
while (ps_a->nest != a) {
ps_a = ps_a->nest;
}
while (ps_b->nest != b) {
ps_b = ps_b->nest;
}
ps_a->nest = b->nest;
ps_b->nest = a;
free(b);
return OK;
}
int main()
{
return 0;
}