- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.链表的一般结构 链表由结点元素组成。为了适应链表的存储结构,计算机存储空间被划分为一个一个小块,每一小块占若干字节,通常称这些小块为存储结点。 将存储空间中的每一个存储结点分为两部分:一部分用于存储数据元素的值,称为数据域;另一部分用于存放下一个数据元素的存储序号(即存储结点的地址),称为指针域。 在链表中,用一个专门的指针HEAD指向链表中第一个数据元素的结点(即存放第一个数据元素的存储结点的序号)。链表中最后一个元素后面已没有结点元素,因此,链表中最后一个结点的指针域为空(用NULL或0表示),表示链表终止。 2.结点结构体类型的定义 在C语言中,定义链表结点结构的一般形式如下: struct 结构体名 { 数据成员表; struct 结构体名 *指针变量名; }; 3.结点的动态分配 在C语言中,可以利用 malloc 函数向系统申请分配链表结点的存储空间,其形式为 malloc(存储区字节数) 该函数返回存储区的首地址。 1.在链表中查找指定元素 在对链表进行插入或删除的运算中,总是首先需要找到插入或删除的位置,这就需要对链表进行扫描查找,在链表中寻找包含指定元素值的前一个结点。当找到包含指定元素的前一个结点后,就可以在该结点后插入新结点或删除该结点后的一个结点。 2.链表的插入 链表的插入是指在原链表中的指定元素之前插入一个新元素。 要在链表中包含元素x的结点之前插入一个新元素b。其插入过程如下: (1)用malloc()函数申请取得新结点p,并置该结点的数据域为b。即令p-d=b。 (2)在链表中寻找包含元素x的前一个结点,设该结点的存储地址为q。链表如图8.3(b)所示。 (3)最后将结点p插入到结点q之后。为了实现这一步,只要改变以下两个结点的指针域内容: ① 使结点p指向包含元素x的结点(即结点q的后件结点),即令 p-next=q-next ② 使结点q的指针域内容改为指向结点p,即令 q-next=p 3.链表的删除 链表的删除是指在链表中删除包含指定元素的结点。 为了在链表中删除包含指定元素的结点,首先要在链表中找到这个结点,然后将要删除结点放回到可利用栈。 要在链表中删除包含元素x的结点。其删除过程如下: (1)在链表中寻找包含元素x的前一个结点,设该结点地址为q。则包含元素x的结点地址p=q-next。 (2)将结点q后的结点p从链表中删除,即让结点q的指针指向包含元素x的结点p的指针指向的结点,即令 q-next=p-next (3)将包含元素x的结点p释放。此时,链表的删除运算完成。 C语言中中的联合数据类型可以满足这种需要。联合体又称为共用体,意为各种不同数据共用同一段存储空间。 与结构体类似,为了定义联合体类型变量,首先要定义联合体类型,说明该联合体类型中包括哪些成员,它们各属于何数据类型,然后再定义该类型的变量。 定义联合体数据类型的一般形式为 union 联合体名 { 成员表 }; 下面对联合体类型变量作几点说明: (1)由于一个联合体变量中的各成员共用一段存储空间,因此,在任一时刻,只能有一种类型的数据存放在该变量中,即在任一时刻,只有一个成员的数据有意义,其他成员的数据是没有意义的。 (2)在引用联合体变量中的成员时,必须保证数据的一致。 (3)在定义联合体变量时不能为其初始化,并且,联合体变量不能作为函数参数。 (4)联合体类型与结构体类型可以互相嵌套,即联合体类型可以作为结构体类型的成员,结构体类型也可以作为联合体类型的成员。 (1)先定义枚举类型,然后定义该枚举类型的变量。 定义枚举类型的一般形式为 enum 枚举类型名{ 枚举元素列表 }; 其中在枚举元素列表中依次列出了该类型中所有的元素(即枚举常量),如果在定义中没有显式地给出这些元素的值,这些元素依次取值为0,1,2,…。 (2)在定义枚举类型的同时定义该枚举类型的变量。 这种定义方法的一般形式为 enum 枚举类型名{ 枚举元素列表 }变量表; (3)直接定义枚举类型变量。 这种定义方法的一般形式为 enum { 枚举元素列表 }变量表; 在使用枚举类型数据时,要注意以下几个问题: (1)不能对枚举元素赋值,因为枚举元素本身就是常量(即枚举常量)。 (2)虽然在程序中不能对枚举元素赋值,但实际上,每个枚举元素都有一个确定的整
您可能关注的文档
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第1章090909.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第3章091013.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第4章090909.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第6章090924.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第10章091111.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第12章091122.ppt
- C语言程序设计 题解与上机指导 作者 岐艳芳 全书 第1章.ppt
- C语言程序设计 题解与上机指导 作者 岐艳芳 全书 第2章.ppt
- C语言程序设计 题解与上机指导 作者 岐艳芳 全书 第4章.ppt
- C语言程序设计 项目教学 王卓 杜娜 项目1.ppt
- C语言程序设计教程 修订本 作者 徐士良 第4章.ppt
- C语言程序设计教程 修订本 作者 徐士良 第6章.ppt
- C语言程序设计教程 修订本 作者 徐士良 第7章.ppt
- C语言程序设计教程 修订本 作者 徐士良 第9章.ppt
- C语言程序设计教程 作者 陈宝贤 第0章 内容简介、教学要求.ppt
- C语言程序设计教程 作者 陈宝贤 第2章程序设计基础知识.ppt
- C语言程序设计教程 作者 陈宝贤 第3章C语言数据类型.PPT
- C语言程序设计教程 作者 陈宝贤 第5章 顺序结构程序设计.ppt
- C语言程序设计教程 作者 陈宝贤 第7章循环结构程序设计.ppt
- C语言程序设计教程 作者 陈宝贤 第10章数组与字符串处理.ppt
文档评论(0)