验证2线性表子系统实验报告.docx

上传人:b****0 文档编号:9316322 上传时间:2023-05-18 格式:DOCX 页数:12 大小:295.80KB
下载 相关 举报
验证2线性表子系统实验报告.docx_第1页
第1页 / 共12页
验证2线性表子系统实验报告.docx_第2页
第2页 / 共12页
验证2线性表子系统实验报告.docx_第3页
第3页 / 共12页
验证2线性表子系统实验报告.docx_第4页
第4页 / 共12页
验证2线性表子系统实验报告.docx_第5页
第5页 / 共12页
验证2线性表子系统实验报告.docx_第6页
第6页 / 共12页
验证2线性表子系统实验报告.docx_第7页
第7页 / 共12页
验证2线性表子系统实验报告.docx_第8页
第8页 / 共12页
验证2线性表子系统实验报告.docx_第9页
第9页 / 共12页
验证2线性表子系统实验报告.docx_第10页
第10页 / 共12页
验证2线性表子系统实验报告.docx_第11页
第11页 / 共12页
验证2线性表子系统实验报告.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

验证2线性表子系统实验报告.docx

《验证2线性表子系统实验报告.docx》由会员分享,可在线阅读,更多相关《验证2线性表子系统实验报告.docx(12页珍藏版)》请在冰点文库上搜索。

验证2线性表子系统实验报告.docx

验证2线性表子系统实验报告

1、实验容或题目

(1)用结构体描述一个字符型的单向链表。

(2)创建线性表;在线性表中插入元素、删除元素;显示线性表中所有元素的基本操作。

(3)用if语句设计一个选择式菜单。

线性表子系统

****************************************************

*1--------建表*

*2--------插入*

*3--------删除*

*4--------显示*

*5--------查找*

*6--------求表长*

*0--------返回*

****************************************************

2、实验目的与要求

(1)掌握线性表的特点;

(2)掌握线性表顺序存储结构和链式存储结构的基本运算;

(3)掌握线性表的创建,插入,删除和显示线性表中元素的基本操作。

3、实验步骤与源程序

⑴实验步骤

首先构建出各个函数在主调函数main()函数中的作用以及返回值:

CreatList()函数是用来建立线性表,InsList()函数用来插入结点元素,DelList()函数用来删除结点元素,ShowList()函数用来显示线性表,SearchList()函数用来查找线性表元素,主函数main()用于菜单界面,方便操作。

之后便是具体实现每个函数功能的细节。

程序编好后经过不断地差错改错,最后得到正确的源程序。

⑵程序源代码

#include

#include

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");

printf("\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;

s->next=NULL;

p=s;

}

elsez=0;

}

}

voidInsList(inti,charx)

{

linnode*s,*p;

intj;

p=head;

j=10;

while(p!

=NULL&&j

{

j++;

p=p->next;

}

if(p!

=NULL)

{

s=(linnode*)malloc(sizeof(linnode));

s->data=x;

s->next=p->next;

p->next=s;

n++;

}

elseprintf("\n\t\t线性表为空或插入位置超出!

\n");

}

voidDelList(charx)

{

linnode*p,*q;

if(head==NULL)

{

printf("\n\t\t链表下溢!

");

return;

}

if(head->next==NULL)

{

printf("\n\t\t线性表已为空!

");

return;

}

q=head;

p=head->next;

while(p!

=NULL&&p->data!

=x)

{

q=p;

p=p->next;

}

if(p!

=NULL)

{

q->next=p->next;

free(p);

n--;

printf("\n\t\t结点%c已经被删除!

",x);

}

elseprintf("\n\t\t抱歉!

没有找到您要删除的结点。

");

}

voidShowList()

{

linnode*p=head;

printf("\n\t\t显示线性表的所有元素:

");

if(head->next==NULL||p==NULL)

printf("\n\t\t链表为空!

");

else

{

printf("\n\t\t");

while(p->next!

=NULL)

{

printf("%5c",p->next->data);

p=p->next;

}

}

}

voidSearchList(charx)

{

linnode*p;

inti=1;

if(head==NULL)

{

printf("\n\t\t链表下溢!

");

return;

}

if(head->next==NULL)

{

printf("\n\t\t线性表为空,没有任何节点!

");

return;

}

p=head->next;

while(p!

=NULL&&p->data!

=x)

{

p=p->next;

i++;

}

if(p!

=NULL)

printf("\n\t\t在表的第%d位上找到值为%c的结点!

",i,x);

else

printf("\n\t\t抱歉!

未找到值为%c的结点!

",x);

}

voidmain()

{

intchoice,i,j;

charx;

head=NULL;

j=1;

while(j)

{printf("\n");

printf("\n\t\t线性表子系统");

printf("\n\t\t*********************************");

printf("\n\t\t*1------建表*");

printf("\n\t\t*2------插入*");

printf("\n\t\t*3------删除*");

printf("\n\t\t*4------显示*");

printf("\n\t\t*5------查找*");

printf("\n\t\t*6------求表长*");

printf("\n\t\t*0------返回*");

printf("\n\t\t*********************************");

printf("\n\t\t请选择菜单号(0--6):

");

scanf("%d",&choice);

getchar();

if(choice==1)

CreateList();

else

if(choice==2)

{printf("\n\t\t请输入插入的位置i和插入的数据(输入格式:

i,x):

");

scanf("%d,%c",&i,&x);

InsList(i,x);

}

else

if(choice==3)

{printf("\n\t\t请输入要删除的数值:

");

scanf("%c",&x);

DelList(x);

}

else

if(choice==4)

if(head==NULL)

printf("\n\t\t请先建立线性表!

");

else

ShowList();

else

if(choice==5)

{printf("\n\t\t请输入要查找的元素:

");

scanf("%c",&x);

SearchList(x);

}

else

if(choice==6)

printf("\n\t\t线性表长度为:

%d",n);

else

if(choice==0)

j=0;

else

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;应改为:

linnode*p,*s;charx;intz=1,n=0;。

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

当前位置:首页 > 自然科学 > 物理

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

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