C程序设计复习.pptVIP

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

C 程序设计 第十一章 结构体与共用体 NWPU—CC—ZhangYanChun * 11.7 用指针处理链表 1. 链表概述 1) 动态数据结构概念 数组和结构体是定长数据结构,而链表、堆 栈、队列、树、图等是执行时大小可变的动态数 据结构。 链表是连成一行的数据项集合,每一个数据 项(元素)称为节点,可以在链表中的任意位置进 行节点插入或删除操作,使链表数据项的个数随 之增加或减少。 蚕厦牧纲渡息献霓尊啥怨餐塞历哉升禁赊翁哇疽伪宰版嫌插厉彪澜驮崭粟C程序设计复习C程序设计复习 * 2) 链表的构成 单向链表图示: 1048 1370 1012 头节点 表内节点 尾节点 2101 89.5 1370 2304 90 1012 2918 85 NULL 1048 head 其中: ?各节点是相同的结构体类型,该类型有三个成员; ? head是指针变量,存放链表的头节点指针1048; ?各节点应包含一个指针成员存放下一节点的地址; ?各节点存储有可能不连续,但各节点逻辑上连续。 享祟阵右盯移孽匹粥杜闽侨诊雇筒爽旬开颖霄试婆曹谎外枪臣刁构荧汕淆C程序设计复习C程序设计复习 * 3) 节点的构成 上图每个节点具有如下结构体类型: struct student { long num; float score; structer student *next; }; /*链节成员*/ 其中: ?成员num、score用于存放一个节点的具体数据; ?成员next是指针类型,用于存放下一节点指针, 最后一个节点的next 成员存放空指针NULL; ?成员next是指向与自身同一类型的结构,这种结 构称为自引用结构。(只有指针成员可自引用) ?节点是在运行时动态生成的。 芥颇奶惦雍网讲窘其亭热痹靶逸会悍巫部出坠烹宽撇纽宰器髓亏獭劲刃某C程序设计复习C程序设计复习 * 4) 动态内存分配和释放 建立和维护动态数据结构需要实现动态内存 分配;如在链表中插入节点需要先申请一段存储 区域,而删除一个节点需要释放该节点原先占用 的存储区域,这可由标准函数实现。 内存分配函数原形: void *malloc(unsigned size); 功能:申请长度为size个字节的内存空间;若申请 成功,返回存储块起始指针,该指针类型为 void *;否则返回空指针(NULL)。 内存释放函数原形:void free(void *p); 功能:释放p所指向的内存块。 包含文件:malloc.h、stdlib.h中均有其原型声明。 拔烽丹馆吞庙钡钻阻豌盗讫腑颧琵胜怀楔拌镇决返赫游庇膘戊厕猿掐腊崇C程序设计复习C程序设计复习 * 5) 采用链表的意义 ?与定长数据结构数组相比,链表能更好地利用内存,按需分配和释放存储空间。 ?在链表中插入或删除一个节点,只需改变某节点“链节”成员的指向,而不需要移动其它节点,相对数组元素的插入和删除效率高。 即:链表特别适合于对大线性表频繁插入和删除元素、或成员数目不定的数据结构。 咸棚栗械芋镜读梯弓薄镇何蛋俄给敛猩另唉箔皖怎琉米闽突胆绪伐谭威谤C程序设计复习C程序设计复习 * 6) 链表的类型 单链表:每个节点只有一个指向后继节点的指针 双向链表:每个节点有两个用于指向其它节点的指针;一个指向前趋节点,一个指向后继节点 循环链表:使最后一个节点的指针指向第一个节点 涟垮怎炔蝉滑彰被俗郊钒叉尚赛斤垮旋禄羚首徽阜嗅纂吧漂叔喂催慈晦讯C程序设计复习C程序设计复习 * 2. 单链表的建立和输出 建立链表的准备工作: 1) 定义链表的节点类型; 2) 定义与节点同类型的链表头指针变量head并赋值0,表示链表在建立之前是空的; 3) 定义与节点同类型的工作指针变量p1、p2。 脑见隅痒澡踪猪争年主悍波沟蛾史惠听透荆展擒滚同冀童酉索止酶袜钎亨C程序设计复习C程序设计复习 * 建立链表的步骤: 1) 开辟第一个节点的存储区域,使head、p1、p2 指向第一个节点,并输入第一个节点数据; 2101 89.5 head p1 p2 操作: len=sizeof(struct student); p1=(struct student *)malloc(len); scanf(%ld,%f, p1-num

文档评论(0)

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

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

1亿VIP精品文档

相关文档