验证2线性表子系统实验报告Word格式.docx
- 文档编号:20329800
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:11
- 大小:297.93KB
验证2线性表子系统实验报告Word格式.docx
《验证2线性表子系统实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《验证2线性表子系统实验报告Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
实验步骤
首先构建出各个函数在主调函数main()函数中的作用以及返回值:
CreatList()函数是用来建立线性表,InsList()函数用来插入结点元素,DelList()函数用来删除结点元素,ShowList()函数用来显示线性表,SearchList()函数用来查找线性表元素,主函数main()用于菜单界面,方便操作。
之后便是具体实现每个函数功能的细节。
程序编好后经过不断地差错改错,最后得到正确的源程序。
程序源代码
#include<
stdio.h>
malloc.h>
typedefstructlinknode
{
chardata;
structlinknode*next;
}linnode;
linnode*head;
intn;
voidCreateList()
{
linnode*p,*s;
intz;
charx;
n=0;
z=1;
head=(linnode*)malloc(sizeof(linnode));
p=head;
printf("
\n\t\t请逐个输入节点,以‘x’为结束标记!
\n"
);
while(z)
{
printf("
\t\t输入一个字符数据,并按回车:
"
scanf("
%c"
&
x);
getchar();
if(x!
='
x'
)
{
s=(linnode*)malloc(sizeof(linnode));
n++;
s->
data=x;
p->
next=s;
next=NULL;
p=s;
}
elsez=0;
}
}
voidInsList(inti,charx)
linnode*s,*p;
intj;
j=10;
while(p!
=NULL&
&
j<
i)
j++;
p=p->
next;
if(p!
=NULL)
s=(linnode*)malloc(sizeof(linnode));
s->
next=p->
p->
n++;
elseprintf("
\n\t\t线性表为空或插入位置超出!
voidDelList(charx)
linnode*p,*q;
if(head==NULL)
\n\t\t链表下溢!
return;
if(head->
next==NULL)
\n\t\t线性表已为空!
q=head;
p=head->
p->
data!
=x)
q=p;
q->
free(p);
n--;
\n\t\t结点%c已经被删除!
x);
\n\t\t抱歉!
没有找到您要删除的结点。
voidShowList()
linnode*p=head;
\n\t\t显示线性表的所有元素:
next==NULL||p==NULL)
\n\t\t链表为空!
else
\n\t\t"
while(p->
next!
printf("
%5c"
p->
next->
data);
p=p->
voidSearchList(charx)
linnode*p;
inti=1;
\n\t\t线性表为空,没有任何节点!
i++;
\n\t\t在表的第%d位上找到值为%c的结点!
i,x);
未找到值为%c的结点!
voidmain()
intchoice,i,j;
head=NULL;
j=1;
while(j)
{printf("
\n\t\t线性表子系统"
\n\t\t*********************************"
\n\t\t*1------建表*"
\n\t\t*2------插入*"
\n\t\t*3------删除*"
\n\t\t*4------显示*"
\n\t\t*5------查找*"
\n\t\t*6------求表长*"
\n\t\t*0------返回*"
\n\t\t请选择菜单号(0--6):
%d"
choice);
getchar();
if(choice==1)
CreateList();
else
if(choice==2)
{printf("
\n\t\t请输入插入的位置i和插入的数据(输入格式:
i,x):
scanf("
%d,%c"
i,&
InsList(i,x);
if(choice==3)
\n\t\t请输入要删除的数值:
DelList(x);
else
if(choice==4)
if(head==NULL)
printf("
\n\t\t请先建立线性表!
else
ShowList();
if(choice==5)
{printf("
\n\t\t请输入要查找的元素:
scanf("
SearchList(x);
}
if(choice==6)
\n\t\t线性表长度为:
n);
else
if(choice==0)
j=0;
printf("
\n\t\t输入错误!
请重新输入!
4、测试数据与实验结果
图一建立一个线性表
图二线性表数据的插入
图三线性表数据的删除
图四线性表数据的查找
图五求表长
图六返回
5、结果分析与实验体会
在学过本节有关线性表的两种存储结构的基础操作后,做这个验证性的实验的焦点便在于验证各种操作的正确与否,在对照书上的线性表基本运算的实现的算法思路和注意事项,结合老师上课强调的每种算法的注意重点,找出了原始程序的几个主要的错误点:
1、某些地方运用了C++语言而不是C,如:
每个函数在为申请一块LinkNode类型的存储单元的操作,并将其地址复制给变量时:
p=newLinkNode;
而在C环境中应为:
p=(LinkList*)malloc(sizeof(LinkNode));
。
再如:
在释放p所指的结点时运用了delete(p);
应该为free(p);
2、某些地方将赋值语句写在定义该变量的上面,这就直接导致了程序编译时的错误,如:
n=0;
linnode*p,*s;
charx;
intz=1;
应改为:
intz=1,n=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 验证 线性 子系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)