#include <stdio.h>
#include<malloc.h>
#define ElemType int
#define Status int
#define OK 1
#define ERROR 2
#define OVERFLOW -1
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
//InitList
void CreatLinkList_L1(LinkList &L, int n)
{
//尾插法建立单链表,即顺序建立
LinkList p;
L = (LinkList)malloc(sizeof(LNode));
L->next =NULL;
LinkList pn;
pn = L;
for(int i=0; i<n; i++)
{
p=(LinkList)malloc(sizeof(LNode));
p->data = i;
pn->next = p;
pn = p;
}
pn->next = NULL;
}//CreatLinkList_L
void CreatLinkList_L2(LinkList &L, int n)
{
//头插法建立单链表,即逆序建立
LinkList p;
L = (LinkList)malloc(sizeof(LNode));
L->next =NULL;
for(int i=0; i<n; i++)
{
p=(LinkList)malloc(sizeof(LNode));
p->data = i;
p->next = L->next;
L->next = p;
}
}//CreatLinkList_L
/// DestoryList
Status DestoryList(LinkList &L){
free(L);
printf("You have destory List.\n");
return OK;
}//DestoryList
///////////////////////////
Status ListEmpty(LinkList L){
if(L == NULL)
printf("It is an empty List!\n");
else
printf("It is not an empty List!\n");
return OK;
}//ListEmpty
Status ListLength(LinkList L){
LinkList p;
p = L;
int i=0;
while(p->next)
{
p = p->next;
i++;
}
return i;
}//ListLength
/// GetElem
Status GetElem_L(LinkList L, int i, ElemType &e){
LinkList p;
int j;
p = L->next;
j = 1;
while(p && j<i){
p = p->next;
++j;
}
if(!p || j>i)
return ERROR;
e = p->data;
return OK;
}
void MergeList(LinkList &La, LinkList &Lb ,LinkList Lc){
LinkList *pa, *pb, *pc;
}
int main(void)
{
LinkList L1 , L2;
CreatLinkList_L1(L1,5);
CreatLinkList_L2(L2,6);
int elem ,e;
elem = GetElem_L(L1, 2, e);
printf("%d\n" , e);
//DestoryList(L1);
ListEmpty(L1);
ListEmpty(L2);
printf("%d\n" ,ListLength(L1));
printf("%d\n" ,ListLength(L2));
return 52;
}