链表插入问题
想在第一个位置插入(i==1)时,程序就运行错误,不知道哪儿错了大哥大姐们帮我看看。。谢了。。
#include <stdio.h>
#define NULL 0
struct insert{
char c;
struct insert *next;
};
int main(int argc, char *argv[])
{
int i,j=1;
struct insert a1,a2,a3,a4,a5,a6,a7,*head,*p,e;
a1.c='a';a2.c='b';a3.c='c';a4.c='d';a5.c='e';a6.c='f';a7.c='g';
head=&a1;
a1.next=&a2;a2.next=&a3;a3.next=&a4;a4.next=&a5;
a5.next=&a6;a6.next=&a7;a7.next=NULL;
p=head;
printf("insert position and word:");
scanf("%d %c",&i,&e.c);
while(p&&j<i-1){
p=p->next;
j++;
}
if(!p||j>i){
printf("ERROR!!");
}else if(i==1){
e.next=p->c;
head=&e;
&e=head;
while(p){
printf("%c",p->c);
p=p->next;
}
}else{
e.next=p->next;
p->next=&e;
p=head;
while(p){
printf("%c",p->c);
p=p->next;
}
}
return 0;
}
[ 本帖最后由 Nekomimi 于 2010-1-3 23:32 编辑 ]