#include <stdio.h>
#include <malloc.h>
#include<stdlib.h>

typedef struct LNode...{
int data;
struct LNode *next;
}LNode,*LinkList;

//新建链表
void CreateList(LinkList &head,int i)...{
LinkList p;
p=head=(LinkList)malloc(sizeof(LNode));
for(int k=0;k<i;k++)...{
if(k==0)
scanf("%d",&p->data);
else...{
p->next=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->next->data);
p=p->next;
}
}
p->next=NULL;
}
//将元素插入到链表的指定位置
void InsertList(LinkList &head,int e,int i)...{
int ListLength(LinkList &head);
if(i>ListLength(head)+1)...{
printf("插入元素的位置不能大于%d ",ListLength(head)+1);
return;
}
LinkList p,q;
p=head;
int j=1;
if(i==1)...{
q = (LinkList)malloc(sizeof(LNode));
q->data = e;
q->next=p;
p=q;
head = p;
}else...{
q=(LinkList)malloc(sizeof(LNode));
q->data=e;
while(p&&j<i-1)...{
p=p->next;
j++;
}
q->next=p->next;
p->next=q;
}
}
//将元素直接叫单链表后面
void InsertList(LinkList &head,int e)...{
LinkList p,q;
p = head;
q = (LinkList)malloc(sizeof(LNode));
q->data=e;
while(p->next)...{
p=p->next;
}
p->next=q;
q->next=NULL;
}
//返回链表的长度
int ListLength(LinkList &head)...{
int result=0;
LinkList p = head;
while(p)...{
result++;
p = p->next;
}
return result;
}
//打印链表
void PrintList(LinkList &head)...{
LinkList p = head;
int i=1;
printf("Index Data ");
while(p)...{
printf("%d %d ",i++,p->data);
p=p->next;
}
}
main()...{
LinkList head;
CreateList(head,5);
PrintList(head);
printf("Length:%d ",ListLength(head));
InsertList(head,0);
PrintList(head);

}
1110





