typedef struct ListNode{
int val;
struct ListNode *next;
}LNode,*LinkList;
void InitListWithHeadNode(LinkList &L){
L=(ListNode *) malloc(sizeof(LNode));
if(L==NULL)
exit(0);
L->next=NULL;
}
LinkList List_TailInsert(LinkList &L,int x){
if(L==NULL){
InitListWithHeadNode(L);
}
LNode *s,*r;
r=L;
while (r->next!=NULL){
r=r->next;
}
s=(LNode *) malloc(sizeof(LNode));
s->val=x;
r->next=s;
s->next=NULL;
return L;
}
LinkList List_HeadInsert(LinkList &L,int x){
if(L==NULL){
InitListWithHeadNode(L);
}
LinkList s=(LinkList) malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
return L;
}
LNode* GetElem(LinkList L,int i){
int j=1;
LNode* p=L->next;
if(i==0)
return L;
if(i<1)
return NULL;
while (p!=NULL&&j<i){
p=p->next;
j++;
}
return p;
}
void PrintList(LinkList L){
LinkList p;
p=L->next;
printf("打印的链表如下:\n");
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int length(LinkList L){
int len=0;
LNode *p=L;
while (p->next!=NULL){
p=p->next;
len++;
}
return len;
}
bool Empty(LinkList L){
if(L->next==NULL)
return true;
else
return false;
}