单链表修改
#include<stdio.h>#include<stdlib.h>
#include<malloc.h>
#define maxsize 100
#define ok 1
#define error 0
int yes=0;
typedef char elemtype;
typedef struct lnode
{
char data;
struct lnode *next;
}lnode, *linklist;
void createlinklist(linklist *l)
{
int i,n;
linklist p,q;
char ch;
printf("Len:\n");
scanf("%d",&n);
(*l)=(linklist)malloc(sizeof(lnode));
(*l)->next=NULL;
printf("Data:\n");
for(i=0;i<n;i++)
{
p=(linklist)malloc(sizeof(lnode));
scanf("%c",&ch);
if((ch=getchar())!='\n')
{
p->data=ch;
p->next=(*l)->next;
(*l)->next=p;
}
}
printf("Data:\n");
for(i=1;i<=n;i++)
{
printf("%3d",i);
}
printf("\n");
q=(*l)->next;
while(q)
{
printf("%3c",q->data);
q=q->next;
}
printf("\n");
yes=1;
}
int listinsert(linklist l,int i,char e)
{
linklist p=l,s,q;
int j=0,n;
while(p!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(!p)
{
printf("Error!\n");
return error;
}
s=(linklist)malloc(sizeof(lnode));
printf("Seat:\n");
scanf("%d",i);
printf("Number:\n");
scanf("%d",&e);
if((e=getchar())!='\n')
{
s->data=e;
s->next=p->next;
p->next=s;
}
printf("Data:\n");
for(i=1;i<=n;i++)
{
printf("%d",i);
}
printf("\n");
q=l->next;
while(q)
{
printf("%c",q->data);
q=q->next;
}
printf("\n");
return ok;
}
int listdelete(linklist l,int i,char *e)
{
linklist p=l,q;
int j,n;
while(p!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(!p)
{
printf("Error!\n");
return error;
}
printf("Seat:\n");
scanf("%d",&i);
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
return *e;
printf("Data:\n");
for(i=1;i<=n;i++)
{
printf("%d",i);
}
printf("\n");
q=q->next;
while(q)
{
printf("%c",q->data);
q=q->next;
}
printf("\n");
}
int main(void)
{
linklist l;
char e,ch;
int i;
createlinklist(&l);
listinsert(l,i,e);
listdelete(l,i,&ch);
return ok;
}