7用指针处理链表11
4建立动态链表所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系例11
5写一函数建立一个有3名学生数据的单向动态链表
算法如图图11-12图11-12§11
7用指针处理链表算法的实现:我们约定学号不会为零,如果输入的学号为0,则表示建立链表的过程完成,该结点不应连接到链表中
如果输入的p1->num不等于0,则输入的是第一个结点数据(n=1),令head=p1,即把p1的值赋给head,也就是使head也指向新开辟的结点p1所指向的新开辟的结点就成为链表中第一个结点图11-13图11-13§11
7用指针处理链表算法的实现:再开辟另一个结点并使p1指向它,接着输入该结点的数据
如果输入的p1->num≠0,则应链入第2个结点(n=2),将新结点的地址赋给第一个结点的next成员
接着使p2=p1,也就是使p2指向刚才建立的结点图11-14图11-14§11
7用指针处理链表算法的实现:再开辟一个结点并使p1指向它,并输入该结点的数据
在第三次循环中,由于n=3(n≠1),又将p1的值赋给p2->next,也就是将第3个结点连接到第2个结点之后,并使p2=p1,使p2指向最后一个结点
图11-15图11-15§11
7用指针处理链表算法的实现:再开辟一个新结点,并使p1指向它,输入该结点的数据
由于p1->num的值为0,不再执行循环,此新结点不应被连接到链表中
将NULL赋给p2->next
建立链表过程至此结束,p1最后所指的结点未链入链表中,第三个结点的next成员的值为NULL,它不指向任何结点
图11-16图11-16§11
7用指针处理链表建立链表的函数如下:#include#include#defineNULL0//令NULL代表0,用它表示“空地址#d