高手帮忙啊,哪里的问题啊??
VC的编译环境,运行就弹出对话框,异常错误。
帮忙看看啊,哪里出了问题??
这是书上的题目:两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同学号的那些结点。
---
#include <stdio.h>
#include <string.h>
#define LA 4
#define LB 5
struct student
{
char num[6];
char name[8];
struct student *next;
}A[LA],b[LB];
void main()
{
struct student a[LA]={{"101","Wang"},{"102","Li"},{"105","Zhang"},{"106","Wei"}};
struct student b[LB]={{"103","Zhang"},{"104","Ma"},{"105","Chen"},{"107","Guo"},{"108","Lui"}};
int i;
struct student *p,*p1,*p2,*head1,*head2;
head1=a;
head2=b;
printf(" list a: \n");
for(p1=head1,i=1;p1<a+LA;i++)
{
p=p1;
p1->next=a+i;
printf("%8s%8s\n",p1->num,p1->name );
p1=p1->next;
}
p->next=NULL;
printf("\n list b:\n");
for(p2=head2,i=1;p2<b+LB;i++)
{
p=p2;
p2->next=b+i;
printf("%8s%8s\n",p2->num,p2->name );
p2=p2->next;
}
p->next=NULL;
printf("\n");
/*删除*/
p1=head1;
while(p1!=NULL)
{
p2=head2;
while(p2!=NULL&&strcmp(p1->num,p2->num )!=0)
p2=p2->next;
if(strcmp(p1->num,p2->num )==0)
if(p1==head1)
head1=p1->next;
else
p->next=p1->next;
p=p1;
p1=p1->next;
}
/*输出*/
p1=head1;
printf("\n result:\n");
while(p1!=NULL)
{
printf("%7s %7s\n",p1->num,p1->name );
p1=p1->next;
}
}