#include <stdlib.h>
#include <stdio.h>
typedef struct lnode
{
int data;
struct lnode *next;
}linklist;
void initlist(linklist *L)
{L=(linklist *)malloc(sizeof(lnode));
L->next=0;
}
void creat(linklist *L,int n)
{
int i;
linklist *p;
initlist(L);
for(i=n;i>0;i--)
{
p=(linklist *)malloc(sizeof(lnode));
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
}
count(linklist *L)
{int i=0;linklist *p;
p=L->next;
while(p!=0)
{i++;
p=p->next;
}
return i;
}
deletel(linklist *L,int i,int &e)
{
int j;
linklist *q,*p;
p=L;
j=0;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if (!(p->next)||j>i-1)
return 0;
q=p->next;p->next=q->next;
e=q->data;
free(q);
return 1;
}
insert(linklist *L,int i,int e)
{
linklist *s,*p;
int j=0;
s=(linklist *)malloc(sizeof(lnode));
s->data=e;
s->next=0;
p=L;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if(p==0||j>i-1) return 0;
else {
s->next=p->next;
p->next=s;
return 1;}
}
void main()
{linklist *p,*r; int i,j,*t;
creat(p,10);
r=p->next;
for(i=1;i<=10;i++)
{printf("%d ",r->data);
r=r->next;
}
printf("\n");
i=count(p);
printf("%d\n",i);
i=deletel(p,5,*t);
if (i) printf("%d\n",*t);
else printf("error\n");
i=insert(p,7,10);
if(!i) printf("error\n");
else {r=p->next;
while(r!=0)
{printf("%d ",r->data);
r=r->next;}
}
printf("\n");
}