C语言 链表 谭浩强

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:41:38
有两个链表A和B,从A中删除与B中有相同学号的结点.
#define La 4
#define Lb 5
#define NULL 0
struct student
{
char num[6];
char name[8];
struct student *next;
}a[La],b[Lb];
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","Liu"}};
int i,j;
struct student *p,*p1,*p2,*pt,*head1,*head2;
/*initializing*/
head1=a;head2=b;
clrscr();
printf("list a:\n");
for(p1=head1,i=1;p1<a+La;i++)
{
p=p1;/*这里的p作用是什么*/
p1->next=a+i;
printf("%8s%8s\n",p1->num,p1->name);
p1=p1->next;
}
p->next=NULL;/*现在p已指向A〔3〕
printf("\n list b:\

p=p1;
p->next=NULL;
生成链表,将链表的最后一个节点的next指针标记为NULL

p=p2
p->next=NULL;
生成链表,将链表的最后一个节点的next指针标记为NULL

p->next=p1->next;/*此语句执行前p指向哪里,不是B〔4〕
p=p1; /* 上一句的p就是这里赋值的,下一次循环就用上 */