- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件技术与基础
* * * * * * * * * * * * * * * * 软件技术基础 第3讲 基本数据结构及其运算(4) 内容提要 2.1 数据结构的基本概念 2.2 线性表及其顺序存储结构 2.3 线性链表 2.3.1 线性链表的基本概念 2.3.2 线性链表的运算操作 2.3.3 链式的栈及操作 2.3.4 链式的队列及操作 2.3.5 循环链表及运算 2.3.6 多项式表示与运算 2.3.5 循环链表及其运算 一,循环链表的概念 在线性链表运算中,存在一个问题: 对于空表和第一个结点的处理必须单独考虑 出现分支语句,增加程序复杂度 循环链表 2.3.5 循环链表及其运算 一,循环链表的概念 循环链表是与单链表一样,是一种链式的存储结构,所 不同的是,循环链表的最后一个结点的指针是指向该循环链 表的第一个结点或者表头结点,从而构成一个环形的链。 2.3.5 循环链表及其运算 二,循环链表的特点 1)循环链表中增加一个表头结点,其数据域为任意或根据 需要来设置,指针域指向第一个元素的节点,循环链表的头 指针指向表头结点。 2)在建立一个循环链表时,必须使其最后一个结点的指针 指向表头结点,而不是象单链表那样置为NULL。此种情况 还使用于在最后一个结点后插入一个新的结点。 思考:空表、表尾的判定依据? 2.3.5 循环链表及其运算 二,循环链表的特点 空表的判定 头结点的指针域是否指向头结点。 head-next?=head 尾节点判定 该节点的指针是否指向头结点。 p-next?=head 2.3.5 循环链表及其运算 二,循环链表的特点 空表的判定 头结点的指针域是否指向头结点。 head-next?=head 尾节点判定 该节点的指针是否指向头结点。 p-next?=head 2.3.5 循环链表及其运算 三,循环链表的优点 1)给出表中任意结点的位置,可以访问到表中其他所有的结点。 2)由于表头结点的存在,任何情况下循环链表中至少存在一个结点,使空表和非空表实现统一。 2.3.5 循环链表及其运算 四,循环链表的运算 插入 将新结点插入到指定结点之后。 1)申请新结点的存储空间; 2.1)指定结点为头结点,头结点的指针指向新结点, 新结点的指针指向指定结点。 2.2)指定结点为中间结点,新结点指针指向指定结点,指 定结点前结点指针指向新结点。 2.3.5 循环链表及其运算 四,循环链表的运算 插入 clink insertnode(clink head,clink ptr,int value){clink new_node;new_node=(clink) malloc(sizeof(cnode));if(!new_node)return NULL;new_node-data=value;new_node-next=NULL;if(head==NULL){new_node-next=new_node;return new_node;} 2.3.5 循环链表及其运算 四,循环链表的运算 插入 if(ptr==head-next){/*----情况1:插在第一结点之前---*/new_node-next=head-next;head-next=new_node;}else {/*-----情况2:插在第一结点之后-------*/new_node-next=ptr-next;ptr-next=new_node;}return head;} 2.3.5 循环链表及其运算 四,循环链表的运算 删除 删除循环链表中指定结点。 1)判断循环链表是否有结点; 2)寻找指定结点的前结点; 3)指定结点前结点指向的改变。 2.3.5 循环链表及其运算 四,循环链表的运算 删除 clink deletenode(clink head,clink ptr) {clink previous;previous=head;if(head!=head-next)while(previous-next!=ptr)previous=previous-next;previous-next=ptr-next; } 例题 2.3.5 循环链表及其运算 四,循环链表的运算 出队 DataType DeQueue (LinkQueue *Q)?{???????????? DataType x;? Queue
您可能关注的文档
最近下载
- 风力发电机模拟软件:FAST二次开发_(3).FAST模拟器架构解析.docx VIP
- 语文三年级下册专项训练:阅读.doc VIP
- 金属制品项目企业经营战略方案.docx
- 人工智能导论课件 第十三章 类脑智能.pptx VIP
- 招聘面试题大全.doc VIP
- 北师大版小学数学六年级下册各单元思维导图.pdf
- 中考物理常考估测汇总及估测训练100题(模拟50题+真题50题)(原卷版).docx VIP
- 岩壁梁悬臂模板施工方案.docx VIP
- 碳纤维片材加固混凝土结构技术规程(2007年版) CECS146:2003.pdf VIP
- 新人教版(2025)小学三年级英语下册第六单元Unit 6 单元整体教学设计.docx VIP
文档评论(0)