#define null 0
typedef struct node/*结点类型定义*/
{
int data;
struct node *next;
}lnode, *linklist;
linklist createlist()/*创建链表*/
{
linklist p,h;
int x;
h=p=(lnode *)malloc(sizeof(lnode));
p->next=null;
scanf("%d",&x);
while(x!=0)
{
p->next=(lnode *)malloc(sizeof(lnode));
p->next->data=x;
p=p->next;
scanf("%d",&x);
}
p->next=null;
return h;
}
getlist(linklist *head,int i)/*查找*/
{
linklist p=head;
int j=0;
while(j<i&&p->next!=null)
{
p=p->next;
j++;
}
if(j==i)
return p;
else return null;
}
insert(linklist *head,int i,int x)/*插入*/
{
linklist p,q;
p=getlist(head,i-1);
if(p==null)
{
printf("i的位置超过了表长!");
}
else
{
q=(lnode *)malloc(sizeof(lnode));
q->data=x;
q->next=p->next;
p->next=q;
}
}
displist(linklist *head)/*输出*/
{
linklist p;
p=head;
p=p->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
main()
{
linklist head;
head=createlist();
displist(head);
head=insert(head,3,862);
displist(head);
getch();
}