#include<stdio.h>
#include<malloc.h>
typedef struct listnode{
char data;
struct listnode *next;
}listnode,*linklist;
linklist head;
void creat(int len)
{linklist p,q;
int i;
char ch;
printf("请输入字母");
head=(linklist)malloc(sizeof(listnode));
head->next=NULL;
q=head;
for(i=0;i<=len;i++)
{p=(linklist)malloc(sizeof(listnode));
scanf("%c",&ch);
p->data=ch;
p->next=q->next;
q->next=p;
q=q->next;}
p=head->next;
printf("链表为 : ");
while(p)
{printf("%c",p->data);
p=p->next;}
}
void del(int pose)
{int i;
linklist p,q;
p=head;
for(i=1;i<pose+1;++i)
p=p->next;
q=p->next;
q=q->next;
p->next=q;
printf("链表为:");
p=head->next;
while(p)
{printf("%c ",p->data);
p=p->next;
}
free(p);
}
void insert(char ch,int pose)
{ int i;
linklist p,q,s;
p=head;
for(i=1;i<pose+1;++i)
{p=p->next;
s=p->next;
q=(linklist)malloc(sizeof(listnode));
q->data=ch;
q->next=s;
p->next=q;
p=head->next;}
printf("插入后的字符链表为:");
while(p)
{printf("%c ",p->data);
p=p->next;
}}
void main( )
{int c,len,x;
char y,d;
printf("请输入链表长度:");
scanf("%d",&len);
creat(len);
printf("\n增加结点输入a,删除结点输入d");getchar();
scanf("%c",&y);
if(y=='a')
{printf("请输入要插入的字母和位置:");getchar();
scanf("%c,%d",&d,&x);
insert(d,x);}
else if(y=='d')
{printf("请输入要删除的字母:\n");getchar();
scanf("%c",&c);
del(c);}}