链表基本操作Word文件下载.docx
- 文档编号:21898618
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:29
- 大小:21.88KB
链表基本操作Word文件下载.docx
《链表基本操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《链表基本操作Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
把链表清空。
成功清空链表返回1*/
intmakeempty(linklist&
linklistp,q;
p=L->
next;
while(p)//当p非空时,删除p
{
q=p;
p=p->
free(q);
}
//只剩头指针,所以L->
next=NULL
//清空后链表中元素为0
//清空后返回1
5、求链表长度
/*函数功能:
返回链表的长度。
参数;
函数返回链表的长度*/
intgetlength(linklistL)
linklistp;
p=L->
intj=0;
while(p)
{
j++;
//统计链表中元素
p=p->
}
returnj;
//最后返回链表长度.
6、判断链表是否为空
/*函数功能:
判断链表是否为空。
参数;
链表为空时返回0,不为空返回1*/
intisempty(linklistL)
if(L->
next)//头结点后有元素表示链表不空则返回1
else
//头结点后没有元素表示链表不空则返回0
7、检查链表是否为满
判断链表是否为满。
链表为满时返回0,不为满返回1*/
intisfull(linklistL)
elem<
=MAXSIZE)//头结点的elem储存的为链表的长度。
//其小于MAXSIZE表示链表不满
//否则返回0
8、遍历链表
遍历链表,输出每个节点的elem值。
链表(linklistL)
通过循环逐个输出节点的elem值*/
voidshow(linklistL)
linklistp;
p=L->
if(isempty(L)==0)//当链表为空时则输出链表为空
{
cout<
<
"
链表为空!
;
}
while(p)//当链表为不空时则输出链表每个节点的elem值
p->
elem<
"
p=p->
cout<
endl;
9、从链表中查找元素
从链表中查找有无给定元素。
链表(linklistL),给定元素(inti)
如果链表中有给定元素(i)则返回1,否则返回0*/
intfind(linklistL,inti)
while(p)
if(p->
elem==i)//判断有无元素I,有返回1
return1;
return0;
//没有找到返回0
10、从链表中查找与给定元素值相同的元素在表中的位置
从链表中查找给定元素的位置。
如果链表中有给定元素i则返回元素的位置,没有则返回0*/
intlocation(linklistL,inti)
intj=0;
j++;
elem==i)//判断有无元素i,有返回其的位置j
//没有则返回0
11、向链表中插入元素
向链表中的某个位置插入元素。
链表(linklistL),位置(inti),元素(elemtypee)。
成功插入返回1,否则返回0*/
intinsert(linklist&
L,inti,elemtypee)
linklistp,s;
intj=0;
p=L;
while(p&
&
j<
i-1)//查找第i个元素的前驱
p=p->
j++;
if(j>
i-1||!
p)//不符合条件返回0
s=(linklist)malloc(sizeof(list));
//给节点s分配内存
s->
elem=e;
next=p->
//插入操作
p->
next=s;
L->
elem++;
//插入完成后头结点的elem加1
return1;
//成功插入返回1
12、从链表中删除元素
在链表中的某个位置删除元素。
成功删除返回1,否则返回0*/
intdeleteelem(linklist&
L,inti)
linklistp,q;
p=L;
while(p->
next&
(p->
next))//不符合条件返回0
q=p->
next=q->
//删除操作
free(q);
elem--;
////插入完成后头结点的elem减1
//成功删除返回1
13、主界面函数
/*函数功能:
显示所有操作功能。
无*/
voidzhujiemian()
endl<
\t\t\t\t数据结构实验一"
\t\t------------------------------------------"
\t\t1链表初始化"
\t\t2清空链表"
\t\t3求链表长度"
\t\t4链表是否为空"
\t\t5检查链表是否为满"
\t\t6遍历链表"
\t\t7从链表中查找元素"
\t\t8从链表中查找与给定元素值相同的元素在表中的位置"
\t\t9向链表中插入元素"
\t\t10从链表中删除元素"
\t\t其他键退出"
\t请选择要进行操作的序号(1--10):
二、函数调用及主函数设计
主函数主要设计:
zhujiemian();
//显示主界面
cin>
>
a;
//输入要进行的操作的序号
do
switch(a)//用switch语句进行选择操作
case1:
//初始化
if(init(L)==1)
cout<
初始化成功!
else
初始化失败!
break;
case2:
if(makeempty(L)==1)//链表置空
链表已清空!
链表清空失败!
case3:
//链表的长度
b=getlength(L);
cout<
链表的长度为:
b<
case4:
//判断链表是否空
if(isempty(L)==1)
链表不空!
case5:
//判断链表是否满
if(isfull(L)==1)
链表不满!
链表已满!
case6:
//遍历链表
show(L);
case7:
//链表是否有要查找元素
您要查找的元素:
cin>
b;
if(find(L,b)==1)
链表中有元素"
链表没中有元素"
case8:
//输出链表要查找元素的位置
您要查找的元素为:
if(location(L,b)==0)
没有您要查找的元素"
您查找的元素"
在第"
location(L,b)<
个位置。
case9:
do{
输入你要插入的位置和元素"
cin>
b>
c;
while(b<
=0||b>
getlength(L)+1)
/*此处可以对错误的输入进行判断*/
{
cout<
插入位置错误!
请重新插入!
cin>
}
if(insert(L,b,c)==0)
您插入的位置不对,插入失败!
else
插入成功!
是否继续插入元素(Y/y继续),其他键停止插入\n"
//提示是否继续进行插入操作
YES;
}while(YES=='
Y'
||YES=='
y'
);
case10:
if(getlength(L)==0)
//判断链表是否为空若是则输出链表为空,并继续
链表为空无法删除!
break;
输入你要删除元素的位置:
while(b<
getlength(L))
输入错误!
请重新输入!
if(deleteelem(L,b)==0)
您删除的位置不对,删除失败!
删除成功!
是否继续删除元素(Y/y继续),其他键停止删除\n"
//提示是否继续进行删除操作
default:
system("
pause"
////按任意键继续
cls"
////清理屏幕上的内容
zhujiemian();
///显示主界面
cin>
//输入要进行操作的序号
}while(a>
0&
a<
=10);
///对进行输入的数进行判断(不在0—9则程序结束)
说明:
通过调用序列号不同的函数进行各种操作。
函数根据每次输入的数进行判断不在1—10内的函数将结束,否则将继续进行。
三、程序调试及运行结果分析
程序第一步必须执行初始化,否则程序不能运行。
在程序第一步必须执行初始化后,程序完美运行,在进行任何函数操作程序都是正常运行,而且本程序对插入和删除时进行错误检测如有的地方不可以插入,有点地方不能删除,如果链表为空时则程序会输出链表为空,并继续进行其他操作,大大减少了程序的bug。
四、实验总结
通过这次试验我熟悉了对链表的基本操作,对基本的链表操作有了很好的掌握,知道自己容易在什么地方出错。
五、程序清单
//实验一_1.h
#include"
iostream"
malloc.h"
stdlib.h"
usingnamespacestd;
#defineMAXSIZE100//链表的最大长度
elemtypeelem;
STD*next;
{
【*******************数据结构实验一*******************】"
【****************************************************】"
【1链表初始化】"
【2清空链表】"
【3求链表长度】"
【4链表是否为空】"
【5检查链表是否为满】"
【6遍历链表】"
【7从链表中查找元素】"
【8从链表中查找与给定元素值相同的元素在表中的位置】"
【9向链表中插入元素】"
【10从链表中删除元素】"
【其他键退出】"
【*********请选择要进行操作的序号(1--10):
***********】"
intinit(linklist&
L=(linklist)malloc(sizeof(list));
if(!
i-1)
p)
next))
next)
if(isempty(L)==0)
returnj;
q=p;
free(q);
elem==i)
=MAXSIZE)
//main.cpp
实验一.h"
intmain()
charYES;
linklistL;
inta,b,c;
zhujiemian();
switch(a)
if(makeempty(L)==1)
插入位置错
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 操作