- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
void main(void) { SeqList myList; int i , x; ? ListInitiate(myList); for(i = 0; i 10; i++) ListInsert(myList, i, i+1); ListDelete(myList, 4, x); for(i = 0; i ListLength(myList); i++) ListGet(myList, i, x); } 程序运行结果: 1 2 3 4 6 7 8 9 10 2.3 线性表的链式表示和实现 1.单链表的结构 (1)单链表中构成链表的结点只有一个指向直接后继结点的指针域。其结构特点:逻辑上相邻的数据元素在物理上不一定相邻。 单链表结点的结构体定义如下: typedef struct Node { DataType data; struct Node *next; }SLNode 结点结构如下图示: 指针域 数据域 next data 或 数据域:存储元素数值数据 指针域:存储直接后继的存储位置 (2)头指针、头结点和首元结点的区别 头指针 头结点 首元结点 a0 head a1 … an ^ 示意图如下: 头指针是指向链表中第一个结点(或为头结点、或为首元结点)的指针; 头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息,它不计入表长度。 首元结点是指链表中存储线性表第一个数据元素a0的结点。 (3)带头结点单链表和不带头结点单链表的比较 p a0 a1 an-1 ∧ … head data next x ∧ s (a) 插入前 p a0 a1 an-1 ∧ … head data next x ∧ s (b) 插入后 1) 在带头结点单链表第一个数据元素前插入结点 2) 删除带头结点单链表第一个数据元素结点 p a0 a1 an-1 ∧ … head data next 3) 在不带头结点单链表第一个数据元素前插入结点 a0 a1 an-1 ∧ … head x ∧ s (a) 插入前 a0 a1 an-1 ∧ … head x s (b) 插入后 4)在不带头结点单链表其他数据元素前插入结点 p ai-1 a0 ai an-1 ∧ … head data next x s … × 5)删除不带头结点单链表第一个数据元素结点 a0 a1 an-1 ∧ … head data next × 6)删除不带头结点单链表其他数据元素结点 p ai-1 a0 ai an-1 ∧ … head data next … × ai+1 结论: (1)带头结点单链表无论在第一个数据元素结点前插入,还是在其他结点前插入,操作方法一样;而不带头结点单链表在第一个数据元素结点前插入,和在其他结点前插入,操作方法不一样 (2)删除操作和插入操作类似 (3)设计带头结点单链表的算法时,头指针参数可设计成输入型参数;设计不带头结点单链表的算法时,头指针参数必须设计成输出型参数 (4)因此,带头结点单链表的算法设计简单 结点定义: typedef struct Node { DataType data; struct Node *next; } SLNode 2.单链表的操作实现 (1)初始化ListInitiate(head) void ListInitiate(SLNode **head) { *head = (SLNode *)malloc(sizeof(SLNode)); (*head)-next = NULL; } (2)求当前数据元素个数ListLength(head) int ListLength(SLNode *head) { SLNode *p = head; int size = 0; while(p-next != NULL) { p = p-next; size ++; } return size; } (3)插入ListInsert(head, i, x) int ListInsert(SLNode *head, int i, DataType x) { SLNode *p, *q; int j; ? p = head; j = -1;
您可能关注的文档
- 向量组与矩阵.ppt
- 品质管理——品管培训.ppt
- 国际货运英文函电.ppt
- 发电厂电气部分第6章断路器和隔离开关原理.ppt
- 培训—客户服务及销售技巧.ppt
- 声波透射法超声波检测灌注桩培训讲义.ppt
- 处方审核的技术要点.ppt
- 在工作中的有效沟通技巧.ppt
- 多糖的分离纯化.ppt
- 大学计算机基础课件讲义.ppt
- 2025年甘肃自然能源研究所博士研究生及急需紧缺专业招聘参考题库附答案解析.docx
- 2024年资阳辅警协警招聘考试真题附答案.docx
- 张家口市张北县社区工作者考试题库(各地真题).docx
- 2025年日喀则辅警协警招聘考试真题必考题.docx
- 天津市静海区社区工作者考试题库附参考答案(完整版).docx
- 2025年抚顺辅警招聘考试真题附答案.docx
- 2025年武隆县辅警协警招聘考试真题必考题.docx
- 2026河南鹤壁海昌智能科技股份有限公司招聘95人笔试备考试题(浓缩300题)附答案.docx
- 2024年许昌辅警招聘考试题库必考题.docx
- CAAC无人机机长考试地面站题库(全国通用).docx
原创力文档


文档评论(0)