版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*用C+阕写一个双链表的程序*/*本文可以帮助大家快速的学习如何建立双向链表,以及对双向链表进行的相关操作,比如删除节点、插入节点、链表排序、计算链表长度、打印双向链表等操作*/#include<iostream>usingnamespacestd;/定义双向链表的节点typedefstructstudentintdata;structstudent*pre;structstudent*next;dnode;/建立双向链表dnode*creat()intcycle=1;intx;dnode*head,*t,*s=NULL;head=newdnode;t=head;while(cy
2、cle)cout<<"Pleaseinputa'int'typenumber:"<<endl;cin>>x;if(x!=0)s=newdnode;s->data=x;t->next=s;s->pre=t;t=s;elsecycle=0;head=head->next;head->pre=NULL;t->next=NULL;cout<<"第一个节点的值:"<<endl;cout<<head->data<<endl&l
3、t;<endl;returnhead;/计算双向链表的长度intlength(dnode*head)intn=0;dnode*p;p=head;while(p!=NULL)n+;p=p->next;returnn;/打印双向链表并计算链表的长度intprint(dnode*head)intn=0;dnode*p;p=head;while(p!=NULL)n+;cout<<p->data<<endl;p=p->next;cout<<"Length="<<n<<endl;returnn;/实现双
4、向链表中节点的删除dnode*del(dnode*head)dnode*p;intnum;p=newdnode;p=head;/输入要删除的节点上的值cout<<"Pleaseinputthedeletatingvalue:"<<endl;cin>>num;while(num!=p->data&&p->next!=NULL)p=p->next;if(num=p->data)if(p=head)head=head->next;head->pre=NULL;delete(p);elseif(
5、p->next=NULL)p->pre->next=NULL;delete(p);elsep->pre->next=p->next;p->next->pre=p->pre;elsecout<<"Don'tfindthe'num':"<<endl;returnhead;/双向链表中插入节点dnode*insert(dnode*head)intnum;p=head;p0=newdnode;cout<<"Pleaseinputtheinsertingvalu
6、e:"<<endl;cin>>num;p0->data=num;while(p0->data>p->data&&p->next!=NULL)p=p->next;if(p0->data<=p->data)if(p=head)head=p0;p0->pre=NULL;p0->next=p;p->pre=p0;elsep->pre->next=p0;p0->pre=p->pre;p0->next=p;p->pre=p0;/*p->next
7、=p0;p0->pre=p;p0->next=p->next;p->next->pre=p0;*/elsep->next=p0;p0->pre=p;p0->next=NULL;returnhead;/对双向链表进行排序dnode *sort(dnode *head)dnode*p;intt,n;p=head;n=length(p);for(inti=0;i<n-1;i+)p=head;for(intj=0;j<n-1-i;j+)if(p->data>p->next->data)t=p->data;p-&g
8、t;data=p->next->data;p->next->data=t;p=p->next;returnhead;intmain()dnode*head;head=creat();cout<<"创建的双向链表为:"<<endl;print(head);cout<<"head="<<head<<endl<<endl;head=del(head);cout<<"删除节点之后的双向链表为:"<<endl;print
9、(head);head=insert(head);cout<<"插入节点之后的双向链表为:"<<endl;print(head);head=sort(head);cout<<"排序之后的双向链表为:"<<endl;print(head);/*备注:在进行链表插入时要注意,链表中的值,、从头节点向后默认是增加的,所以插入的节点位于两个节点中间时,插入节点的位置应该是在p节点之前。如下图所示:*/实验验证:创建链表输入:1,2,3,65,12,11,70删除:12插入:68最后按照冒泡排序发进行排序。hiiiput*inttypeiuimL&r二P1qi£oinput,i'nmter:Fleas«himput改sinf1typodjlitL&t:lJPl则时4Plnp31iWiJHT-fiSPiggiEiut<"int'tyj?enjurteT:12PlqaMIllp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PTC培训测评试题和答案
- 校园门卫专项试题及答案分享
- 校园保洁员主题诗歌朗诵会
- 北京市建设工程施工现场管理办法
- 门窗下口泄水孔预留施工工艺
- 高中化学反应原理大题授课方案
- 医疗救助工作专题会议
- 香港高端生意转让合同范本
- 化学试题案例及答案
- 淘宝逛逛商品推广合同范本
- 火工品装配工安全意识强化能力考核试卷含答案
- 《习作:变形记》课件
- 《城市轨道交通工程全方位高压喷射注浆(MJS)技术标准》
- 2025年会计领军人才(企业类)(行政事业类)选拔考试笔试面试真题(附答案)
- 劳技课《叠衣服》课件
- 旅行社供应商管理制度
- 患者身份识别管理标准WST840-2025学习解读课件
- 3024骨科专案改善PDCA提高深静脉血栓中高危风险患者预防措施落实率品管圈
- 河道生态护岸技术
- 中医彭涛课件
- DB11-T 1445-2025 北京市民用建筑工程室内环境污染控制规程
评论
0/150
提交评论