- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言 第8章 动态数据结构(二级C的内容,可参考).ppt
所谓头插入,即每次将数据元素结点插入到表头结点的之后,第一个数据元素结点之前。插入过程如图7-3所示: ∧ 初始状态: 插入第一个结点之后: an ∧ * 插入第二个结点之后: 插入第三个结点之后: 插入最后一个结点之后: an-1 an ∧ an-1 an-2 an ∧ an-1 a1 an ∧ … … * 完整程序: #include malloc.h #include stdio.h #include stdlib.h typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; * void CreateList ( LinkList L, int n ){ int i; LNode *p; printf(现在建立链表:\n); for ( i = n;i 0;i--) { printf(请输入第%d个结点的元素值:\n,i); p=(LNode*)malloc(sizeof(LNode)); if ( !p ) exit (0); scanf(%d, p-data); p-next = L-next ; L-next = p ;} } * void main(){ LNode *L,*p; int n; printf(请输入链表中的元素个数:); scanf(%d,n); printf(现在建立链表的头结点:\n); L = (LNode*) malloc( sizeof ( LNode ) ); if ( !L ) exit ( 0); L-next = NULL; printf(现在开始建立链表:\n); CreateList(L,n); printf(链表建立结束,开始输出链表中的元素值!\n); for(p=L;p;p=p-next) { if(p==L) printf(头结点的地址值:%u , p); else printf(当前结点的地址值:%u , p); printf(\tp-data=%d \n, p-data);} printf(\n); } * 以上的算法只是建立链表的一种方法,它的核心是新的数据元素结点插在链表的第一个数据元素的位置;我们也可以将新建立的数据元素结点每次都插在链表的尾部,大家可以思考一下,以尾插入的方式建立链表,程序怎样编写? * 7.3.3 链表结点的插入 将一个数据元素插入到链表中,有三种情况: 头插入:将一个新元素插入在链表的头结点的后面,其它的所有结点之前称为头插入。 尾插入:将一个新元素插入在链表的尾结点的后面,使得新插入的结点成为尾结点称为尾插入。 在链表中的第i个数据元素的位置处插入:将一个新元素插入在链表中的第i个数据元素的位置处,即插入在第i个数据元素结点之前,使得新插入的结点成为链表中的第i个结点。 * 例7-8:已有链表L 如图所示,链表中的元素按递增有序排列: 其中每个结点中存放的值为学生的考试成绩。现在有另外三个学生的的成绩分别为65、82、90。将他们插入到链表L中,要求插入之后链表依然递增有序。 80 70 85 ∧ 图7.4 链表的插入过程 L * 图7.5 头插入过程 将 65 插入到链表L中: 为65申请一个结点空间,首地址放入s中; 80 70 85 ∧ p 65 s 将s插入到链表中: 设p=L-next, L p-data65吗? 不小于! 65应在p结点之前。 即s插在L结点之后。 L-next=s; s-next=p; * 实现语句: p=L-next; s=(LNode*)malloc(sizeof(LNode)); s-data=x; s-next=p; L-next=s; 插入之后的链表状态: 80 70 85 ∧ 65 L * 将82 插入到链表L中: 插入的过程: 首先应找到82 应在的位置: 82应该插在两个结点之间,82前面结点的data域值小于82;82后面结点的data域值大于等于82;如图所示: L: 65 80 70 85 ∧ 82 * 实现语句: q=L; p=L-next; while( p p-datas-data ) { q=p; p=p-next; } 65 80 70 82 85 ∧ 插入之后的链表: * 插入过程: q=L; 65 80 70 82 85 ∧ while( p p-datas-data
您可能关注的文档
最近下载
- 皮带硫化知识.doc VIP
- [紧固件]常用紧固件选型设计.pdf VIP
- 高速公路钢筋混凝土盖板涵首件施工方案.doc VIP
- 解读《GB_Z 44526 - 2024无损检测 操作能力鉴定》全面解读.docx VIP
- 本田GX630-660-690发动机维修手册.pdf VIP
- 2025四川成都东部集团有限公司及下属企业招聘产业招商等岗位94人笔试备考题库及答案解析.docx VIP
- (全国通用)01-2023年秋季高一入学分班考试模拟卷地理试题(解析版).docx VIP
- 20210129-中信建投-因子深度研究系列:高频订单失衡及价差因子.pdf VIP
- 发电厂检修规程.docx VIP
- 2024-2025学年度第二学期期末综合素质调研七年级英语试题(含听力材料及答案).docx
文档评论(0)