第十章:结构体与共用体04
让编程改变世界
Change the world by program
链表例题讲解
[caption id="attachment_187" align="aligncenter" width="263"]
链表例题[/caption]
今天,我们将以图文并茂的方式来展示链表的具体创建过程!!
[caption id="attachment_188" align="aligncenter" width="288"]
链表原理[/caption]
我们约定学号不会为零,如果输入的学号为0,则表示建立链表的过程完成,该结点不应连接到链表中。
如果输入的p1->num不等于0,则输入的是第一个结点数据(n=1),令head=p1,即把p1的值赋给head,也就是使head也指向新开辟的结点p1所指向的新开辟的结点就成为链表中第一个结点。
再开辟一个结点并使p1指向它,并输入该结点的数据。
[caption id="attachment_189" align="aligncenter" width="300"]
链表原理[/caption]
[caption id="attachment_190" align="aligncenter" width="300"]
链表原理[/caption]
[caption id="attachment_191" align="aligncenter" width="300"]
链表原理[/caption]
对链表的删除操作
从一个动态链表中删去一个结点,并不是真正从内存中把它抹掉,而是把它从链表中分离开来,只要撤销原来的链接关系即可。
[caption id="attachment_192" align="aligncenter" width="300"]
链表的删除操作[/caption]
随堂练习
题目:写一函数以删除动态链表中指定的结点。
解题思路:
一、从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个学号。
二、如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。
三、可以设两个指针变量p1和p2,先使p1指向第一个结点 。
四、如果要删除的不是第一个结点,则使p1后移指向下一个结点(将p1->next赋给p1),在此之前应将p1的值赋给p2 ,使p2指向刚才检查过的那个结点。
五、将以上几点我们综合得出算法流程图:
[caption id="attachment_193" align="aligncenter" width="300"]
链表练习[/caption]
[buy]
获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/LBLVEDXIDOAO']视频下载[/Downlink]