当前位置: 首页 > news >正文

代做毕设要注册答疑网站wordpress分销模板

代做毕设要注册答疑网站,wordpress分销模板,网站建设规划书百度文库,微信小程序源代码实验五#xff1a;实现循环双链表各种基本运算的算法 一、实验目的与要求 目的:领会循环双链表存储结构和掌握循环双链表中各种基本运算算法设计。 内容:编写一个程序cdinklist.cpp,实现循环双链表的各种基本运算和整体建表算法(假设循环双链表的元素类型ElemType为char),并…实验五实现循环双链表各种基本运算的算法 一、实验目的与要求 目的:领会循环双链表存储结构和掌握循环双链表中各种基本运算算法设计。 内容:编写一个程序cdinklist.cpp,实现循环双链表的各种基本运算和整体建表算法(假设循环双链表的元素类型ElemType为char),并在此基础上设计一个主程序,完成如下功能: (1)初始化循环双链表h。 (2)依次采用尾插法插入a、b、c、d、e元素 (3)输出循环双链表h。 (4)输出循环双链表h长度 (5)判断循环双链表h是否为空。 (6)输出循环双链表h的第3个元素 (7)输出元素a的位置。 (8)在第4个元素位置上插人f元素 (9)输出循环双链表h。 (10)删除循环双链表h的第3个元素 (11)输出循环双链表h。 (12)释放循环双链表h。 二、实验类型 C算法编程 三、实验原理及说明 循环链表(circular linked list)是另一种形式的链式存储结构。循环链表有循环单链表和循环双链表两种类型,循环单链表的结点类型和非循环单链表的结点类型LinkNode 相同,循环双链表的结点类型和非循环双链表的结点类型 DinkNode 相同。 把双链表改为循环双链表的过程是将它的尾结点的next指针域由原来为空改为指问头结点,将它的头结点的 prior 指针域改为指向尾结点,整个双链表形成两个环。 循环链表的基本运算的实现算法与对应非循环链表的算法基本相同,主要差别是对于循环单链表或循环双链表L,判断表尾结点p的条件是p-next-L;另外在循环双链表L 中可以通过L-prior 快速找到尾结点 四、实验主要仪器设备和材料 序 号 名 称 主要用途 1 电脑 打开软件 2 Dev c 编写代码运行代码 五、实验内容和步骤 根据《教程》中2.3.4节的算法得到cdlinklist.cpp程序,其中包含如下函数。 InitList(DLinkNode *L):初始化循环双链表L。 DestroyList(DLinkNode xL):释放循环双链表L。 ListEmpty(DLinkNode *L):判断循环双链表L是否为空表。 ListLength(DLinkNodexL):返回循环双链表L的元素个数 DispList(DLinkNode *L):输出循环双链表L。 GetElem(DLinkNode *L,inti,ElemType e):获取循环双链表L中第i个元素。LocateElem(DLinkNode *L,ElemType e):在循环双链表L中查找元素e。ListInsert(DLinkNode *L,inti,ElemTypee):在循环双链表L中第i个位置上插入元素e。 ListDelete(DLinkNode *L,inti,ElemTypee):从循环双链表L中删除第i个元素。对应的程序代码如下(设计思路详见代码中的注释): 步骤 创建一个cdlinklist.cpp文件将函数写入文件中 创建一个main.cpp文件编写主函数对函数进行验证 实验内容 编写cdlinklist #include iostream#include malloc.husing namespace std;typedef char ElemType;typedef struct DNode {ElemType data;struct DNode *prior;struct DNode *next;} DLinkNode;//头插法建立循环双链表void CreateListF(DLinkNode *L, ElemType a[], int n) {DLinkNode *s;L new DLinkNode;L-next NULL;for (int i 0; i n; i) {s new DLinkNode;s-data a[i];s-next L-next;if (L-next ! NULL) L-next-prior s;L-next s;s-prior L;}s L-next;while(s-next ! NULL)s s-next;s-next L;}//尾插法创建循环双链表void CreateListR(DLinkNode * L, ElemType a[], int n) {DLinkNode *s, *r;L new DLinkNode;L-next NULL;r L;for (int i 0; i n; i) {s new DLinkNode;s-data a[i];r-next s;s-prior r;r s;}r-next L;L-prior r;}void InitList(DLinkNode *L) {           //初始化循环双链表L new DLinkNode;L-prior L-next L;}void DestroyList(DLinkNode *L) {            //摧毁循环双链表DLinkNode *pre L, *p pre-next;while(p ! L) {delete pre;pre p;p pre-next;}delete pre;}bool ListEmpty(DLinkNode *L) {         //判断是否为空return (L-next L);}int ListLength(DLinkNode *L) {            //判断长度DLinkNode *p L;int i 0;while(p-next ! L) {i;p p-next;}return i;}void DispList(DLinkNode *L) {             //输出线性表DLinkNode *p L-next;while(p ! L) {cout p-data ;p p-next;}cout endl;}//获取循环双链表L中的第i个元素bool GetElem(DLinkNode *L, int i, ElemType e) {int j 1;DLinkNode *p L-next;if (i 0|| L-next L) return 0;if (i 1) {e L-next-data;return 1;}else {while(j i p! L) {j;p p-next;}if (p L)return 0;else {e p-data;return 1;}}     }//在循环双链表L中查找元素eint LocateElem(DLinkNode *L, ElemType e) {int i 1;DLinkNode *p L-next;while(p ! L p-data ! e) {p p-next;i;}if (p L)return 0;elsereturn i;}bool ListInsert(DLinkNode *L, int i, ElemType e) {int j 1;DLinkNode *p L, *s;if(i 0) return 0;if (p-next L) {s new DLinkNode;s-data e;p-next s; s-next p;p-prior s; s-prior p;return 1;}else if (i 1) {s new DLinkNode;s-data e;s-next p-next; p-next s;s-next-prior s; s-prior p;return 1;}else {p L-next;while(j i - 1 p ! L) {j;p p-next;}if (p L)return 0;else {s new DLinkNode;s-data e;s-next p-next;if (p-next ! NULL) p-next-prior s;s-prior p;p-next s;return 1;}}}bool ListDelete(DLinkNode *L, int i, ElemType e) {int j 1;DLinkNode *p L, *q;if (i 0 || L-next L) return 0;if (i 1) {q p-next;e q-data;L-next q-next;q-next-prior L;delete q;return 1;}else {p L-next;while(j i - 1 p ! L) {j;p p-next;}if(p L)return 0;else {q p-next;e q-data;p-next q-next;if (p-next ! L) p-next-prior p;delete q;return 1;}}} 编写main函数 #include cdlinklist.cppint main() {DLinkNode *h;ElemType e;cout 双链表的基本运算如下: endl;cout (1)初始化循环双链表h endl;         InitList(h);cout (2)依次采用尾插法插人a,b,c,d,e元素 endl;ListInsert(h,1,a);ListInsert(h,2,b);ListInsert(h,3,c);ListInsert(h,4,b);ListInsert(h,5,a);cout (3)输出循环双链表h:;                           DispList(h);cout (4)循环双链表h长度: ListLength(h) endl;cout (5)循环双链表h为 (ListEmpty(h)?空:非空) endl;GetElem(h, 3, e);    cout (6)循环双链表h的第3个元素: e endl;cout (7)元素a的位置: LocateElem(h,a) endl;cout (8)在第4个元素位置上插人f元素 endl;              ListInsert(h,4,f);cout (9)输出循环双链表h:;                                                    DispList(h);cout (10)删除h的第3个元素 endl;                        ListDelete(h,3,e);cout (11)输出循环双链表h:;                                                  DispList(h);cout (12)释放循环双链表h endl;DestroyList(h);return 1;} 运行结果 六、实验小结与分析 在此次实验中我领会了循环双链表链表存储结构掌握了循环双链表链表中的各种基本运算算法设计循环链表是另一种形式的链式存储结构但是它可以在链表的基础上修改而来把双链表改为循环双链表的过程是将它的尾结点的next指针域由原来为空改为指问头结点,将它的头结点的 prior 指针域改为指向尾结点,整个双链表形成两个环。这种可以不用双链表的形式就可以实现快速找到尾结点等功能。在判断是否为对称的链表问题中很好的表现出了循环双链表相对于双链表的优势可以向后遍历也可以向前遍历比双链表更加容易比较是否对称。此次实验使我了解到了循环链表的好处与循环链表的区别所在使我对算法有了更加的了解。
http://www.dnsts.com.cn/news/174026.html

相关文章:

  • 电子商务网站建设代码php网站建设视频教程
  • 证明做二维码打款网站链接网易免费邮箱注册
  • 手机网站建站教育模板下载凤岗网站设计
  • 登录中国沈阳网站珠海网站制作平台
  • 网站怎么做移动的窗口网站 php 源码
  • 石家庄网站建设公司排名南京百度网站排名
  • 中英文网站是咋做的网页设计和网站开发的区别
  • 四川政务网官网入口合肥网站优化公司
  • 上海大型网站制作公司店铺推广渠道
  • 博客网站seo黑客软件
  • 如何在网站上做支付功能网站开发多语言
  • 网站如何快速被做网站收费
  • 海南的网站建设公司怎么做律所的官方网站
  • 直播视频软件哪个好邵阳seo
  • 企业只有建立自己的网站jquery插件网站推荐
  • 如何上传网站内容谷歌seo站内优化
  • 网站建设效益分析wordpress博客主题制作
  • 商务网站模块设计时前台基础设施建设wordpress 设置文章模板
  • 婚纱网站html源码网站网页开发公司
  • 搞网站开发的程序员属于哪一类太平洋电脑网官方网站
  • 丰泽区住房和城乡建设局投诉网站天津住建网
  • 东莞网站快速排名优化网页界面设计是什么
  • 怎么做网站自动响应苏州专业做网站公司哪家好
  • 邳州网站制作杨浦网站建设 网站外包
  • muse cc 做网站秦皇岛网络科技有限公司
  • 上海建设工程造价网站茶叶外贸网站建设
  • 网站建设工资一月多少钱为什么要做网站
  • 找人代做网站注意事项开发者模式打开好还是关闭好
  • php做的一个网站西安百度竞价外包
  • 营销型的网站江苏建设人才网证书查询电子证书