您的位置:首页 > 编程语言 > C语言/C++

结构体与共用体04 - 零基础入门学习C语言56

2011-03-26 17:46 771 查看

第十章:结构体与共用体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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: