- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
shujuc,大数据,数据库,数据恢复软件,数据分析,数据魔方,百度数据,数据英文,中国数据网,北京人口分布数据
上堂课内容回顾: 结构数据类型的C表示法 第2章 线性表 2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 1. 单链表如何实现———建表和输出 例:用单链表结构来存放26个英文字母组成的线性表(a,b,c,…,z),请写出C语言程序。 2. 单链表的修改(或读取) 思路:要修改第i个数据元素,必须从头指针起一直找到该结点的指针p,然后才能:p-data=new_value 。 3. 单链表的插入 4. 单链表的删除 讨论: 单链表只能查找结点的直接后继,若想查找结点的直接前驱,该如何设计? 5. 链表的运算效率分析 1. 查找 因线性链表只能顺序存取,即在查找时要从头指针找起,查找的时间复杂度为 O(n)。 填空: 例1:试用C或类C语言编写一个高效算法,将一循环单链表就地逆置。 例2:在双向链表中如何实现插入和删除运算? 讨论: 若某种高级语言没有指针类型,能否实现链式存储和运算?如何实现? 补概念(自学): 指针的物理意义 和*的区别 P43程序中,switch( *cmp(a,b))的意思 循环单链表高效逆置的算法 讨论1:什么是指针?指针的作用? 讨论3: P43程序中,switch( *cmp(a,b))的意思? 《数据结构》课程实验报告 题目:XXXXXX 班级: 姓名: 学号: 同组者: 指导教师: 华中科技大学电信系 2008年12月 指针—即变量的内存地址。指针主要功能有二: ①提供了一种快速访问数组单元的途径; ②使C语言函数可以修改其调用的参数。 ---指针操作符(单目),返回操作数地址; *---运算符(单目),是对的补充,返回位于这个地址内的变量之值。 例: q=*m意即“q取地址m中的值”。如果数值100存储在内存地址2000中,而这一地址又存在m中,则q=(2000)=100 而 q=m 则意味着 q=2000 类似于“直接寻址”,* 类似于“间接寻址” 讨论2:与指针有关的符号和*之间有何区别? * * 刘玉老师网站:/ (海豚之家) 第2章作业布置:习题集2.8 2.10 2.21 2.22 2.34 2.35 教案下载请到:ftp://liuyu1@:2112 或本科教学网 /benke/ 教学讨论请到: 站内“在线答疑”区 算法书籍哪种好———算法导论(第二版) 被《程序员》等评为06年最受读者喜爱的十大IT图书之一 2. 线性表 逻辑结构:“一对一” 或 “1:1” 存储结构:顺序、链式 运 算:修改、插入、删除[查找和排序另述] 3.顺序存储 特征:逻辑上相邻,物理上也相邻; 优点:随机查找修改快 O(1) 缺点:插入、删除慢 O(n) 4.链式存储 特征:逻辑上相邻,物理上未必相邻; 优点:插入、删除快 O(1) 缺点:随机查找修改慢 O(n) 讨论: 链表的数据元素有两个域,不再是简单数据类型,编程时该如何表示? 因每个结点至少有两个分量,且数据类型通常不一致,所以要采用自定义的结构数据类型。 答: *next data node,长度为m字节 p 赋值方式: p指向结点首地址,然后 p-data=a; p-next=q ; 几个重要的内部函数或操作符: #includestdlib.h sizeof(node)——计算某种数据类型的长度 malloc(m) —开m字节空间 free(p) ——删除一个变量 p=(node*)malloc(sizeof(node)) —求新结点首地址 ② 对于指向结构类型的指针变量,可说明为: struct liuyu *p , *q; 或 node *p, *q; 注:上面已经定义了node为用户自定义的liuyu类型。 ① 类型定义和变量说明可以合写为: typedef struct liuyu //liuyu是自定义结构类型名称 { char data; //定义数据域的变量名及其类型 struct liuyu *next; //定义指针域的变量名及其类型 }node,*pointer; //node是liuyu结构类型的类型替代 // *pointer是指针型的liuyu结构类型的替代 不是变量,而是结构类型的别名 实现思路:先开辟头指针,然后陆续为每个结点开辟存储空间并及时赋值,后继结点的地址要提前送给前面的指针。 先挖“坑”,后种“萝卜”! p=(node*)
您可能关注的文档
最近下载
- 机械CAD:CAM(UG)教案新模板(课次4)2-3 压板的草图绘制.doc VIP
- 富士XA5说明书.pdf VIP
- 针灸学习题集全.pdf VIP
- 固相反应第一节引言第二节固相反应机理第三节固相反应动.ppt VIP
- 肇兴侗寨旅游地用地格局演变.docx VIP
- 2025至2030年中国硼-10酸行业竞争格局及投资战略规划研究报告.docx
- GB_T13077—2024铝合金无缝气瓶定期检验与评定.pdf VIP
- 贝克休斯钻井堵漏材料及工艺.pdf VIP
- 红树林生态系统预警监测与评估体系技术指南.docx
- (高清版)DB1310∕T 286-2022 林木食叶害虫防治效果评价验收规范.pdf VIP
文档评论(0)