第10章基本数据结构补充案例.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章基本数据结构补充案例.doc

第10章基本数据结构 案例10-1 链表的本质、定义、初始化 一、 案例描述 1、 考核知识点 编号名称:链表的本质、定义、初始化 2、 练习口标 >掌握链表的木质及链表的定义、初始化的格式 3、 需求分析 用数组存放数据时,必须事先定义数组长度。但有吋程序屮存放数据的个数是无法确 定的。这种情况可以通过定义一个足够大的数组來解决,但是这样难免会浪费内存,而且 也无法明确到底多人的数纽才足够。在C语言屮存在一种特殊的数据结构:链表,链表存 储的数拋个数不间定,可以很好地解决上述问题。为了加深读者对链表的木质、定义、初 始化的理解,本案例将定义并初始化一个链表。 4、 设计思路(实现原理) 定义链表节点和链表头节点 声明main()函数,在main()函数中,初始化链表。 二、 案例实现 编写程序,代码如下: #include stdio.h #include stdlib.h struct Node TOC \o 1-5 \h \z { int data; struct Node * next; }; struct LinkHead { int length; struct Node * head; }; void initLink(struct LinkHead * linkHead) { linkHead-length = 0; 16 linkHead-head = NULL; 17 } 18 void main() 19 { 20 struct LinkHead * linkHead = (struct LinkHead *)malloc(sizeof(struct 21 LinkHead)); 22 initLink(linkHead); 23 free(linkHead); 24 } 三、案例总结 1、 链表如同一条铁链-样,一环扣一环,屮闽是不能断开的。 2、 链表的节点和链表的头节点是由两个不同类型的数据组成。 3、 用malloc中请内存后记得用free释放内存,否则内存得不到释放,易造成内存池露。 案例10-2链表的常用操作 一、 案例描述 1、 考核知识点 编号名称:链表的常用操作 2、 练习目标 掌握链表的常川操作 3、 需求分析 链表这种数裾结构在编写程序时应用非常广泛,因此熟练地使用链表对优化程序中的 数据存储很重要。为Y加深初学者对链衣的常用操作的理解,本案例将针对链表的获取表 元、插入元素、删除元素等常见操作进行讲解。 4、 设计思路(实现原理) 1) 定义链表节点和链表失节点。 2) 实现获取表元、插入元素、查找元素、删除元索、释放链表的函数功能。 二、 案例实现 编写程序,代码如下: #include stdio.h #include stdlib.h struct Node { int data; struct Node * next; }; struct LinkHead int length; struct Node * head; }; void initLink(struct LinkHead * linkHead) { linkHead-length = 0; linkHead-head = NULL; } struct Node * getNode(struct LinkHead * linkHead, int index) { struct Node * p = 1inkHead-head; for (int i = 0; i index; ++i) { p = p-next; } return p; } void insertNode(struct LinkHead * linkHead, int index, int data) { struct Node * node = (struct Node *)malloc(sizeof(struct Node)); node-data = data; if (index == 0) { node-next = linkHead-head; linkHead-head = node; } else { struct Node * priv = getNode (linkHead, index - 1); node-〉next = priv-next; priv-next = node; } linkHead-〉length++; } struct Node * findNode(struct LinkHead * linkHead, int data) { struct Node * node = 1inkHead-head; while (node != NULL) if (node-

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档