- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计第九章ppt西工大讲义
在一个 循环链表中, 首节点和末节点被连接在一起。这种方式在单向和双向链表中皆可实现 * (有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.) 。 * (有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.) 。 * * 9.4.1 单链表插入结点 图9.8 单链表插入结点示意 * 9.4.1 单链表插入结点 图9.8 单链表插入结点示意 * 9.4.1 单链表插入结点 图9.8 单链表插入结点示意 总结:插入节点需要知道插入点之前的节点位置p。 * 9.4.1 单链表插入结点 实现上述步骤的C语言语句如下: 请注意,这两个表达式的顺序不能颠倒。因为若先修改结点p的指针域指向结点 s,结点p的后一个结点(p-next )就此从链表中断开,再让结点s的指针域指向结点p的后一个结点已成错误的。 在单链表中第i个位置上插入元素e的新结点s的算法如下: s-next=p-next, p-next=s; //结点插入算法 节点的插入 插入可分为随意插入和按顺序插入,随意插 入包括插入到头部、尾部或中间指定位置;按顺 序插入是指按某关键字的顺序插入,而在插入前 链表必须已按该关键字进行了排序。 按顺序插入的步骤: 开辟待插入节点的存储区域并输入数据; 2) 查找插入位置:从链表首节点开始按关键字成 员与待插入节点相同成员进行比较,直到确定了插入位置; 3) 将插入位置前一节点的“链节”成员赋给待插入节点的“链节”成员; 4) 将待插入节点的指针赋给前一节点“链节”成员; 若:插入点在链头,先将头指针赋给插入节点的指针域,再将待插入节点的指针赋给头指针变量。 2101 89.5 1370 head 1048 2304 90 1012 2414 78 1048 1370 1012 1012 2680 2680 2918 85 NULL 1394 91 1048 2030 2030 【例】在上例增加“按学号插入节点的函数” 插入函数: struct tagSTU *insert(struct tagSTU *head) { struct tagSTU *p0, *p1, *p2; long n; int len; len=sizeof(struct tagSTU); p0=(struct tagSTU *)malloc(len); //申请新节点 printf(Enter num,score to insert:); scanf(%ld,%f, p0-num, p0-score); n=p0-num; //产生学号副本n p1=head; //从首节点开始查找 ┇ ┇ p1=head; //↓插入在头部 if(np1-num) { p0-next=head; head=p0; } else { do //查找插入位置 { p2=p1; p1=p1-next; } while(p1!=NULL np1-num); p0-next=p2-next; //插入点在p1之前位置 p2-next=p0; } return(head); } //insert SX09-12 * 9.4.2 单链表删除结点 结点删除操作是指将链表中的某个结点从链表中删除。删除位置可能在头结点、尾结点或者链表中间,删除操作后需要释放删除结点的内存空间。 将链表中第i个结点删去的方法是先在单链表中找到第i-1个结点p,再删除其后的结点,如图(a)所示。若要删除结点p的后一个结点(即p-next ),只需要将p的指针域指向p-next的后一个结点(即p-next-next ),如图(b)所示。 * 9.4.2 单链表删除结点 图9.9 单链表删除结点示意 * 9.4.2 单链表删除结点 图9.9 单链表删除结点示意 第一步:将予删除节点后一个节点连到d前一个节点 * 9.4.2 单链表删除结点 图9.9 单链表删除结点示意 第二步:将予删除节点的内存空间释放 free(d); //释放结点 实现分析:需要保存访问节点的前一个节
您可能关注的文档
- CWI使用方法讲义.doc
- Czhang-第三章结构模型化技术讲义.ppt
- Czhang-第五章系统仿真讲义.ppt
- CYP2C19-基因检测对药物的个体化治疗讲义.ppt
- c三4演示文稿1讲义.ppt
- C区电渣压力焊2讲义.doc
- CZT型高效旋风分离器讲义.doc
- c数据结构chapt10讲义.ppt
- C演示文稿07讲义.ppt
- c电学仪表的使用和选择讲义.ppt
- 建设工程质量安全管理标准化图集(安全篇2024版)ppt230页.pptx
- 《油气储存企业安全风险评估细则(2025年修订)》解读.pptx
- 2025年《危大工程专项施工方案严重缺陷清单专题培训》ppt120页_1230.pptx
- 中建分部分项检验批划分方案、资料目录策划编制要点ppt75页.pptx
- 某项目智慧工地示范项目应用成果介绍75页_5843.pptx
- 2025年中国风筝无人机LED夜光编队编程师应聘面试模拟题及答案.doc
- 2025年中国鞍钢集团招聘笔试题库附答案.doc
- 2025年中国鞍钢集团招聘面试预测题及答案.doc
- 临床器械实验培训试题及答案2025年版.docx
- 中石化《两个责任》解读分析.ppt
文档评论(0)