- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件技术与基础
* * * * * * * * * * * * * * * * 软件技术基础 第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
有哪些信誉好的足球投注网站
文档评论(0)