数据结构实践——循环双链表应用

线性表都是单向的?链表都是单向的?

本次实践将利用循环双链表进行实际应用,感受这种数据结构的好处
要求如下:
设非空线性表ha和hb都用带头节点的循环双链表表示。设计一个算法Insert(ha,hb,i)。其功能是:i=0时,将线性表hb插入到线性表ha的最前面;当i>0时,将线性表hb插入到线性表ha中第i个节点的后面;当i大于等于线性表ha的长度时,将线性表hb插入到线性表ha的最后面。 
  请在实现算法时,除项目中给出的特殊要求,其余工作均可利用项目4完成的算法支持。
循环双链表的基本运算算法,请参考相关的算法库(cdlinklist.h和cdlinklist.cpp))
实现源代码如下:
//*Copyright  (c)2017,烟台大学计算机与控制工程学院*
//*All rights reservrd.*
//*文件名称 :main.cpp*
//*作者:田长航*
//*完成时间:2017年10月12日*
//*版本号:v1.0*
//*问题描述:循环双链表测试函数*
//*输入描述:*
//*程序输出:HA与HB*
#include <stdio.h>
#include <malloc.h>
#include "cdlinklist.h"void Insert(CDLinkList *&ha, CDLinkList *&hb,int i)
{CDLinkList *p=ha->next,*q;int lena=1,j=1;while (p->next!=ha) //求出ha的长度lena{lena++;p=p->next;}if (i==0)   //将hb的所有数据结点插入到ha的头结点和第1个数据结点之间{p=hb->prior;        //p指向hb的最后一个结点/p->next=ha->next;       //将*p链到ha的第1个数据结点前面ha->next->prior=p;ha->next=hb->next;hb->next->prior=ha;     //将ha头结点与hb的第1个数据结点链起来}else if (i<lena)            //将hb插入到ha中间{p=ha->next;while (j<i)         //在ha中查找第i个结点*p{j++;p=p->next;}q=p->next;          //q指向*p结点的后继结点/p->next=hb->next;       //hb->prior指向hb的最后一个结点hb->next->prior=p;hb->prior->next=q;q->prior=hb->prior;}else                        //将hb链到ha之后{ha->prior->next=hb->next; //ha->prior指向ha的最后一个结点hb->next->prior=ha->prior;hb->prior->next=ha;ha->prior=hb->prior;}free(hb);   //释放hb头结点
}int main()
{CDLinkList *HA, *HB;ElemType ha[]= {0, 1, 2, 3, 4, 5, 6, 7 ,8, 9};InitList(HA);CreateListF(HA, ha, 10);ElemType hb[]= {100, 200, 300, 400, 500};InitList(HB);CreateListF(HB, hb, 5);printf("HA: ");DispList(HA);printf("HB: ");DispList(HB);Insert(HA, HB, 0);  //将0改为其他值,多次运行程序完成测试printf("new HA: ");DispList(HA);DestroyList(HA);return 0;
}

运行结果如图所示:

数据结构上机实践第四周项目6- 循环双链表应用相关推荐

  1. 数据结构上机实践第四周项目4 - 建设双链表算法库

    数据结构之自建算法库--双链表 各种算法结构都有各自的用途,在实际中我们会碰到各种工程,单链表有时无法或者不能很好的满足我们的需求,这个时候,双链表不失为一种好的数据结构.本次实践将建立双链表算法库, ...

  2. 数据结构上机实践第四周项目2 - 建设“单链表”算法库

    项目2 - 建设"单链表"算法库 本次实践的目的以多文件组织的形式建设"单链表算法库",以便在后续的工程中使用. 文中的多文件组织方式不再细说,可以点击此处参照 ...

  3. 数据结构上机实践第四周项目1 - 建立单链表

    [项目1 - 建立单链表] 本次项目的目标是定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果. 测试主函数及函数声明源代码如下: //*Copyright (c)2017,烟台大 ...

  4. 数据结构上机实践第四周项目5 - 猴子选大王

    数据结构实践--猴子选大王 首先呢,小普及一下 读者:难道你当我不知道 读者想对小编说: 进入正题,项目要求如下: 一群猴子,编号是1,2,3 -m,这群猴子(m个)按照1-m的顺序围坐一圈.从第1只 ...

  5. 数据结构上机实践第四周项目7 - 多项式求和

    项目6 - 多项式求和 用单链表存储一元多项式,并实现两个多项式的加法. 提示:  1.存储多项式的数据结构  多项式的通式是pn(x)=anxn+an−1xn−1+...+a1x+a0.n次多项式共 ...

  6. 数据结构上机实践第四周项目3 - 单链表应用

    [项目3 - 单链表应用] 算法的建立就是为了应用所服务的,学会方法,真正能应用才是王道. 应用要求如下: 完成下面的应用时,除项目中给出的特殊要求,其余工作均可利用项目2完成的算法支持.  1.设计 ...

  7. 第四周实践项目6 循环双链表应用

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-设非空线性表ha和hb都用带头节点的循环双链表表示.设计一个 ...

  8. 数据结构上机实践第九周项目1 - 二叉树算法库

    二叉树算法库 学了新的内容就应该有新的应用,本次实践将进行二叉树算法库的建立,来适应更多工程的需求,丰富算法库. 注:在main函数中,创建的用于测试的二叉树如下 首先本次建立算法库实践将会运用到多文 ...

  9. 数据结构上机实践第二周项目2- 程序的多文件组织

    [项目2 - 程序的多文件组织] 学习数据结构,目标就是要编制出有相当规模的程序的.将所有的代码放在一个文件中的做法,不能适用现阶段的需求了. 通过这个项目,确认有能力用多文件组织程序.方便以后各章, ...

最新文章

  1. EOSRAM那么火,BANCOR协议白皮书了解一下?
  2. 实现Excel数据导入到SQL2005中的方法(回顾)
  3. sam机架和kx连线图_「声卡跳线」雅马哈UR22C/UR24C声卡设置机架直播K歌
  4. java实体类怎么写_Java中(entity)实体类的书写规范
  5. 用unison来同步你的远程文件夹 - Fwolf's Blog
  6. 深入理解构造函数和原型链
  7. Arduino笔记-呼吸流水灯
  8. 廖雪峰JS教程--条件判断
  9. Bootstrap 源代码之行内代码
  10. Java集合总结大全--史上最强
  11. Smack 4.3.2 发布,XMPP(jabber) 的 Java 客户端类库
  12. 对Oracle SQL Developer中 变量的学习
  13. linux 分区顺序 boot,关于Liunx下的硬盘分区问题(/boot分区)?
  14. 大学英语综合教程三 Unit 3 课文内容英译中 中英翻译
  15. 2021 Namomo Summer Camp Day2 图论(杜瑜皓)
  16. 【细小碎的oi小知识点总结贴】不定时更新(显然也没人看qwq)
  17. 安卓app开发-03-项目的基本开发步骤
  18. Windows10消费版和商业版有什么区别
  19. l5630鲁大师跑分_鲁大师安卓3D引擎更新,跑分测试精准度再升级
  20. 【从零开始学习深度学习】25.卷积神经网络之LeNet模型介绍及其Pytorch实现【含完整代码】

热门文章

  1. 牛客国庆集训派对Day1: K. Tengen Toppa Gurren Lagann(贪心)
  2. 无类域间路由CIDR
  3. 利用Gabor变换法分析纹理图像 matlab代码实现
  4. 开发环境ubuntu16.04常用工具和设置(git、ssh、python、sh、java、Maven、mysql、postgresql)
  5. basys3利用microblaze连接Pmod ad2
  6. 贺利坚老师汇编课程47笔记:jmp short和jmp near ptr和jmp far ptr
  7. 8086考试主要考的最小模式
  8. C#.NET快速开发框架-企业版V4.0截图打包下载
  9. Maven多模块构建实例
  10. 7.25 8figting!