题目一 链表基本操作Word格式.docx

上传人:b****6 文档编号:8584526 上传时间:2023-05-11 格式:DOCX 页数:28 大小:62.47KB
下载 相关 举报
题目一 链表基本操作Word格式.docx_第1页
第1页 / 共28页
题目一 链表基本操作Word格式.docx_第2页
第2页 / 共28页
题目一 链表基本操作Word格式.docx_第3页
第3页 / 共28页
题目一 链表基本操作Word格式.docx_第4页
第4页 / 共28页
题目一 链表基本操作Word格式.docx_第5页
第5页 / 共28页
题目一 链表基本操作Word格式.docx_第6页
第6页 / 共28页
题目一 链表基本操作Word格式.docx_第7页
第7页 / 共28页
题目一 链表基本操作Word格式.docx_第8页
第8页 / 共28页
题目一 链表基本操作Word格式.docx_第9页
第9页 / 共28页
题目一 链表基本操作Word格式.docx_第10页
第10页 / 共28页
题目一 链表基本操作Word格式.docx_第11页
第11页 / 共28页
题目一 链表基本操作Word格式.docx_第12页
第12页 / 共28页
题目一 链表基本操作Word格式.docx_第13页
第13页 / 共28页
题目一 链表基本操作Word格式.docx_第14页
第14页 / 共28页
题目一 链表基本操作Word格式.docx_第15页
第15页 / 共28页
题目一 链表基本操作Word格式.docx_第16页
第16页 / 共28页
题目一 链表基本操作Word格式.docx_第17页
第17页 / 共28页
题目一 链表基本操作Word格式.docx_第18页
第18页 / 共28页
题目一 链表基本操作Word格式.docx_第19页
第19页 / 共28页
题目一 链表基本操作Word格式.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

题目一 链表基本操作Word格式.docx

《题目一 链表基本操作Word格式.docx》由会员分享,可在线阅读,更多相关《题目一 链表基本操作Word格式.docx(28页珍藏版)》请在冰点文库上搜索。

题目一 链表基本操作Word格式.docx

intinit(linklist&

L)

L=(linklist)malloc(sizeof(list));

//头结点申请内存。

if(!

L)//判断有无申请到空间。

return0;

//没有申请到内存,参数失败返回0

L->

next=NULL;

elem=0;

//单链表中有多少元素

return1;

//成功参数返回1

}

4、清空单链表

/*函数功能:

把链表清空

成功清空链表返回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值

通过循环逐个输出节点的elem值*/

voidshow(linklistL)

linklistp;

p=L->

if(isempty(L)==0)//当链表为空时则输出链表为空

{

cout<

<

"

链表为空!

;

}

while(p)//当链表为不空时则输出链表每个节点的elem值

p->

"

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。

四、实验总结

通过这次试验我熟悉了对链表的基本操作,对基本的链表操作有了很好的掌握,知道自己容易在什么地方出错。

五、程序清单

//实验一.h

#include"

iostream"

malloc.h"

stdlib.h"

windows.h"

usingnamespacestd;

#defineMAXSIZE100//链表的最大长度

elemtypeelem;

STD*next;

\t\t----------------------------------------------"

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)

输入你要插入的位置和

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2