#include <stdio.h>
#define null 0
typedef struct node
{int data;
struct node*next;
}slnode;
void*initiate(slnode**h)
{*h=(slnode*)malloc(sizeof(slnode));
(*h)->next=null;
}
slnode append(slnode*p,int x)
{slnode*s;
s=(slnode*)malloc(sizeof(slnode));
s->data=x;
s->next=p->next;
p->next=s;
}
slnode*search(slnode*p,int x)
{slnode*s;
s=p->next;
while(s!=null){
if(s->data==x)return(s);
s=s->next;}
return(null);
}
int insert(slnode*p, int x,int y)
{slnode*m,*n;
n=(slnode*)malloc(sizeof(slnode));
n->data=y;
m=search(p,x);
if(m!=null){
n->next=m->next;
m->next=n;
return(0);
}
else
{printf("%c not found/n",x);
return(-1);
}
}
void travel(slnode*p)
{slnode*s;
s=p->next;
while(s!=null){
putchar(s->data);
s=s->next;
}
putchar('/n');
}
main(){
int i,ch1,ch2,n;
slnode*q,*p;
initiate(&p);
for(i=1;i<4;i++){
printf("ch%d=",i);
ch1=getchar();
getchar();
append(p,ch1);
printf("point ch%d=%c/n",i,ch1);
}
travel(p);
printf("ch1=");
ch1=getchar();
getchar();
printf("ch2=");
ch2=getchar();
getchar();
insert(p,ch1,ch2);
travel(p);
}//注意这个插入是插在你输入的内容的后面。建立单链表的时候是后输入的在前面,至于想怎么修改,这个是很容易的。稍微改一下append函数就行了。