实验二单链表的操作Word文件下载.docx
- 文档编号:20022609
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:22
- 大小:54.25KB
实验二单链表的操作Word文件下载.docx
《实验二单链表的操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验二单链表的操作Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
1.主函数5
2.菜单函数6
3.单链表操作菜单6
4.创建单链表函数6
5.销毁线性表函数6
6.判断表空函数6
7.测量表长6
8.插入函数6
9.删除7
10.查询元素函数7
11.清空单链表7
12.取单链表中指定位置上的元素7
13.输出单链表7
六.心得体会7
七.附录(代码)8
单链表的操作
一.引言
1.1编写目的
1、熟练掌握单链表的存储结构。
2、熟练掌握单链表基本操作的实现。
1.2参考资料
《数据结构(C语言版)》;
二.项目介绍
2.1项目简介
线性表(linearlist)是最常用且最简单的一种数据结构。
简言之,一个线性表是n个数据元素的有限序列。
至于每个数据元素的具体含义,在不同情况下各不相同,它可以是一个数或一个符号,也可以是一页书,甚至其他更复杂的信息。
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。
开发工具
MicrosoftVisualC++6.0
2.2软件运行环境
※处理器无要求,32MB以上内存,硬盘1GB以上
※Microsoft(R)Windows(R)系列所有操作系统
三.需求分析
3.1总体需求分析
1.单链表的创建
2.销毁
3.判断表空
4.测量表长
5.插入
6.删除
7.查询元素
8.清空单链表
9.取单链表中指定位置上的元素
10.输出单链表。
3.2主界面需求分析
设计菜单界面显示所有操作。
四.总体模块设计
1.操作菜单:
输出选择界面菜单
2.选择:
输入数字选择对应操作功能
3.单链表的创建:
建立一个新的单链表
4.销毁:
将单链表销毁
5.5.判断表空:
判断单链表是否为空
6.测量表长:
测量单链表元素的个数
7.插入:
在单链表指定位置上插入数据元素
8.删除:
删除指定位置上的数据元素
9.查询元素:
查询单链表中指定位置上的元素
10.清空单链表:
清空单链表中所有的元素
11.取单链表中指定位置上的元素:
取单链表中指定位置上的元素,并存入e中
12.12.输出单链表:
输出所有单链表中的元素
五.详细设计
1.主函数
功能说明
主函数
原型
voidmain()
输入
按键输入
输出
无
返回值
2.菜单函数
voidMenu()
3.单链表操作菜单
创建单链表
voidSelect(LNode*L)
输入0-9数字
4.创建单链表函数
StatusCreateList_L(LNode*L,intn)
无
单链表首地址
5.销毁线性表函数
销毁单链表
StatusDestroyList_L(LNode*L)
6.判断表空函数
判断表空函数
StatusListEmpty_L(LNode*L)
若L为空表,则返回TRUE,否则返回FALSE
7.测量表长
测量表长
StatusListLength_L(LNode*L)
输出L中数据元素个数
返回L中数据元素个数
8.插入函数
插入函数
StatusListInsert_L(LNode*L,inti,ElemTypee)
输入元素位置i
输出数据元素的值
9.删除
删除
StatusListDelete_L(LNode*L,inti,ElemType*e)
删除元素的位置i
输出删除数据元素的值e
返回删除的元素值e
10.查询元素函数
查询元素函数
StatusQueryList_L(LNode*L,inti)
输入查询数据元素值e
元素e值
11.清空单链表
清空单链表
StatusClearList_L(LNode*L)
12.取单链表中指定位置上的元素
取单链表中指定位置上的元素
StatusGetElem_L(LNode*L,inti,ElemType*e)
输入指定的位置i
输出第i个数据元素的值e
用e返回L中第i个数据元素的值
13.输出单链表
输出单链表
StatusListTraverse_L(LNode*L
输出单链表的所有数据元素
六.心得体会
1.这次单链表操作的操作实验是以项目形式,小组成员共同完成的。
通过这次实验让我们意识到一个项目必须是一个小组成员共同完成,小组成员的分工明确是完成一个项目的前提,只有明确了分工,我们才能做好相应的模块,最后才能整合到一起。
2.这次单链表的操作,让我对单链表的操作更加熟悉,明白了单链表的存储方式,知道单链表与顺序表以及其他线性表的不同之处。
3.在写代码时,我们要完成了一个功能并测试通过后,才能接着添加功能,不要先一次把所有的功能写进去再测试,这样容易导致一次出现大量错误,我们却无法找到错误并修改。
使我们失去信心,认为我们写不出来,从而放弃实验。
七.附录(代码)
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
#defineStatusint
#defineElemTypeint
typedefstructLNode
{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
voidMenu();
//菜单
voidSelect(LNode*L);
//选择菜单
StatusCreateList_L(LNode*L,intn);
//创建单链表
StatusDestroyList_L(LNode*L);
//销毁单链表
StatusListEmpty_L(LNode*L);
//判断表空
StatusListLength_L(LNode*L);
//测量表长
StatusListInsert_L(LNode*L,inti,ElemTypee);
//插入元素
StatusListDelete_L(LNode*L,inti,ElemType*e);
//删除指定位置上的数据元素
StatusQueryList_L(LNode*L,inti);
//查询元素
StatusClearList_L(LNode*L);
//清空单链表
StatusGetElem_L(LNode*L,inti,ElemType*e);
//取顺序表中指定位置上的元素
StatusListTraverse_L(LNode*L);
//输出单链表
LNodeL;
L.next=NULL;
while
(1)
{
Menu();
Select(&
L);
}
}
system("
color02"
);
cls"
printf("
\n"
\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"
\t※※\n"
\t※****************单**链**表**的**操**作**************※\n"
\t※1:
创建单链表2:
销毁单链表※\n"
\t※3:
判断表空4:
测量表长※\n"
\t※5:
插入数据元素6:
删除数据元素※\n"
\t※7:
查询元素8:
清空单链表※\n"
\t※9:
取指定位置元素10:
输出单链表※\n"
\t※0:
退出※\n"
\t※※※※※※※※※※※BUG※※※※※※※※※※※※※\n"
\n\n\t\t请选择操作:
"
inta,i,flag=0;
charc;
ElemTypee;
while
(1)//输入检测
scanf("
%d"
&
a);
getchar();
if(a>
=0&
&
a<
=10)
break;
else
printf("
\t\t非法数据,请重新输入:
switch(a)
case1:
printf("
请输入元素个数!
e);
CreateList_L(L,e);
\n按任意键继续..."
getch();
system("
break;
case2:
DestroyList_L(L);
case3:
ListEmpty_L(L);
case4:
ListLength_L(L);
case5:
请输入指定位置i\n"
while
(1)
{
scanf("
i);
if(i>
0&
i<
=ListLength_L(L)+1)
break;
else
{
printf("
链表中没有此位置!
flag=1;
}
}
if(flag==0)
请输入插入的数据元素\n"
ListInsert_L(L,i,e);
case6:
请输入删除元素的位置\n"
=ListLength_L(L))
ListDelete_L(L,i,&
删除的元素为%d"
e);
case7:
请输入查询元素的位置\n"
QueryList_L(L,i);
case8:
ClearList_L(L);
case9:
请输入指定的位置\n"
GetElem_L(L,i,&
指定位置%d的元素值为:
i,e);
case10:
ListTraverse_L(L);
case0:
exit(0);
//退出系统
StatusCreateList_L(LNode*L,intn)//创建单链表
LNode*p,*last;
inti;
L->
next=NULL;
last=L;
for(i=n;
i>
0;
--i)
p=(LNode*)malloc(sizeof(LNode));
请输入数据:
p);
p->
next=last->
next;
last->
next=p;
last=p;
returnOK;
StatusListTraverse_L(LNode*L)//输出单链表
LNode*p;
p=L->
if(p!
=NULL)
while(p!
%d\t"
p->
data);
p=p->
else
没有任何数据!
StatusDestroyList_L(LNode*L)//销毁单链表
if(L->
next!
L->
顺序表不存在!
StatusListEmpty_L(LNode*L)//判断表空
顺序表不为空!
returnFALSE;
顺序表为空!
returnTRUE;
StatusListLength_L(LNode*L)//测量表长
inti=0;
i++;
单链表共有%d个数据\n"
i);
returni;
StatusListInsert_L(LNode*L,inti,ElemTypee)//插入元素
LNode*p,*last;
intii;
p=L;
last=p;
while(p!
if(last!
for(ii=0;
ii<
i-1;
ii++)
last=last->
p=p=(LNode*)malloc(sizeof(LNode));
data=e;
插入成功!
StatusListDelete_L(LNode*L,inti,ElemType*e)//删除指定位置上的数据元素
LNode*p,*last;
i-1;
p=last->
*e=p->
data;
next=p->
free(p);
删除成功!
StatusQueryList_L(LNode*L,inti)//查询指定位置上的数据元素
LNode*p;
intii,e;
for(ii=0;
i;
p=p->
e=p->
位置%d上的数据元素为:
%d\n"
i,e);
StatusClearList_L(LNode*L)//清空单链表
free(p);
清空完毕!
StatusGetElem_L(LNode*L,inti,ElemType*e)//取顺序表中指定位置上的元素
i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 二单链表 操作
![提示](https://static.bdocx.com/images/bang_tan.gif)