链表单链表 双向循环实验报告讲解Word格式文档下载.docx
- 文档编号:14965276
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:18
- 大小:122.53KB
链表单链表 双向循环实验报告讲解Word格式文档下载.docx
《链表单链表 双向循环实验报告讲解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《链表单链表 双向循环实验报告讲解Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
单链表示意图:
添加
双向循环链表示意图:
创建
next
程序代码:
//单链表
#include<
iostream.h>
windows.h>
constMAX=5;
enumreturninfo{success,fail,overflow,underflow,range_error};
intdefaultdata[MAX]={11,22,33,44,55};
classnode
{
public:
intdata;
node*next;
};
classlinklist
private:
node*headp;
protected:
intcount;
linklist();
~linklist();
boolempty();
voidclearlist();
returninfocreate(void);
returninfoinsert(intposition,constint&
item);
returninforemove(intposition);
returninfotraverse(void);
linklist:
:
linklist()
headp=newnode;
headp->
next=NULL;
count=0;
}
~linklist()
clearlist();
deleteheadp;
boollinklist:
empty()
if(headp->
next==NULL)
returntrue;
else
returnfalse;
voidlinklist:
clearlist()
node*searchp=headp->
next,*followp=headp;
while(searchp->
next!
=NULL)
{
followp=searchp;
searchp=searchp->
next;
deletefollowp;
}
count=0;
returninfolinklist:
create()
node*searchp=headp,*newnodep;
for(inti=0;
i<
MAX;
i++)
newnodep=newnode;
newnodep->
data=defaultdata[i];
searchp->
next=newnodep;
searchp=searchp->
count++;
searchp->
traverse();
returnsuccess;
insert(intposition,constint&
item)//插入一个结点
if(position<
=0||position>
=count)
returnrange_error;
node*newnodep=newnode,*searchp=headp->
for(inti=1;
i<
position&
&
searchp!
=NULL;
i++)
newnodep->
data=item;
//给数据赋值
next=followp->
//注意此处的次序相关性
followp->
next=newnodep;
count++;
//计数器加一
remove(intposition)//删除一个结点
if(empty())
returnunderflow;
=0||position>
=count+1)
//这里两个指针的初始值设计一前一后
next=searchp->
//删除结点的实际语句
deletesearchp;
//释放该结点
count--;
//计数器减一
traverse(void)
{
node*searchp;
searchp=headp->
cout<
<
"
连表中的数据为:
endl;
while(searchp!
cout<
searchp->
data<
"
;
classinterfacebase
linklistlistface;
//定义一个对象Cskillstudyonface
voidclearscreen(void);
voidshowmenu(void);
voidprocessmenu(void);
voidinterfacebase:
clearscreen(void)
system("
cls"
);
showmenu(void)
================================"
功能菜单"
1.创建链表"
2.增加结点"
3.删除结点"
4.遍历链表"
0.结束程序"
======================================"
请输入您的选择:
processmenu(void)
intreturnvalue,item,position;
charmenuchoice;
cin>
>
menuchoice;
switch(menuchoice)//根据用户的选择进行相应的操作
case'
1'
returnvalue=listface.create();
if(returnvalue==success)
cout<
链表创建已完成"
break;
2'
请输入插入位置:
cin>
position;
请输入插入数据:
item;
returnvalue=listface.insert(position,item);
if(returnvalue==range_error)
数据个数超出范围"
else
操作成功!
!
3'
输入你要删除的位置:
returnvalue=listface.remove(position);
if(returnvalue==underflow)
链表已空"
elseif(returnvalue==range_error)
删除的数据位置超区范围"
4'
listface.traverse();
0'
endl<
您已经成功退出本系统,欢迎再次使用!
!
system("
pause"
exit
(1);
default:
对不起,您输入的功能编号有错!
请重新输入!
voidmain()
interfacebaseinterfacenow;
linklistlistnow;
colorf0"
interfacenow.clearscreen();
while
(1)
interfacenow.showmenu();
interfacenow.processmenu();
interfacenow.clearscreen();
/*功能:
用双向循环链表存储数据
1.创建链表
2.增加结点
3.删除结点
4.遍历链表
制作人:
内容:
239行
*/
node*next;
//指向后续节点
node*pre;
//指向前面的节点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 链表单链表 双向循环实验报告讲解 表单 双向 循环 实验 报告 讲解