数据结构线性表的链式表示和实现的实习报告Word格式文档下载.doc
- 文档编号:13965484
- 上传时间:2022-10-16
- 格式:DOC
- 页数:19
- 大小:967.50KB
数据结构线性表的链式表示和实现的实习报告Word格式文档下载.doc
《数据结构线性表的链式表示和实现的实习报告Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《数据结构线性表的链式表示和实现的实习报告Word格式文档下载.doc(19页珍藏版)》请在冰豆网上搜索。
1.1动态分配的存储结构
1.2每一个结点的指针域指向其直接后继元素的数据域,尾元结点除外
1.3指针是数据元素之间的逻辑关系的映像
2线性链表的类C语言表示
typedefstructLNode
{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
【实验环境】
VC++6.0
二、【实验内容】
【实验方案】
编写主函数,调用链式表的存储结构初始化建表,插入和删除的算法,调试运行得出结果
【实验过程】
(实验步骤、记录、数据、分析)
1.先将线性表的单链表存储结构与算法编入VC++6.0中
TypedefstructLNode
voidCreateList_L(LinkList&
L,intn)
L=(LinkList)malloc(sizeof(LNode));
L->
next=NULL;
for(i=n;
i>
0;
--i)
p=(LinkList)malloc(sizeof(LNode));
scanf("
%d"
&
p->
data);
p->
next=L->
next;
next=p;
}
StatusGetElem_L(LinkListL,inti,ElemType&
e)
p=L->
j=1;
while(p&
&
j<
i)
p=p->
++j;
if(!
p||j>
returnERROR;
e=p->
data;
returnOK;
StatusListInsert_L(LinkList&
L,inti,ElemTypee)
p=L;
j=0;
i-1)
p=p->
++j;
returnERROR;
s=(LinkList)malloc(sizeof(LNode));
s->
data=e;
next=p->
next=s;
StatusListDelete_L(LinkList&
L,inti,ElemType&
while(p->
next&
next||j>
q=p->
next=q->
e=q->
free(q);
2.调试第一次显示错误如下:
原因:
由于没有头文件及宏定义以及自定义,因此导致许多错误,可能还有许多错误没有显示
3.将以下语句编入VC++6.0中
#include"
stdio.h"
stdlib.h"
#defineOK1
#defineERROR0
typedefintElemType;
typedefintStatus;
4.调试第二次显示错误如下:
由于算法中许多变量没有定义,因此有许多错误
5.将以下语句加入算法中:
inti;
LinkListp;
(加入创建链表的算法中)
intj;
(加入查找元素的算法中)
LinkListp,s;
(加入插入元素的算法中)
LinkListp,q;
(加入删除元素的算法中)
6.调试第三次显示没有错误:
7.现在开始编写主函数:
(1)先编写调用创建链表的函数的主函数:
如下:
voidmain()
LinkListL;
inti,n;
scanf("
n);
CreateList_L(L,n);
for(i=n;
printf("
%d"
L->
printf("
\n"
);
调试显示为:
运行显示为:
产生了随机数说明for循环语句那里编写错误
因此修改为:
for(p=L->
p!
=NULL;
p=p->
next)
p->
这次正确了那么继续编写下面的其他主函数,形成的总的主函数为:
LinkListL,p;
printf("
ElemTypee;
&
i);
GetElem_L(L,i,e);
%d\n"
e);
e);
ListInsert_L(L,i,e);
ListDelete_L(L,i,e);
8.调试第四次显示为:
9.运行显示结果为:
10.但运行后的界面显得很单调;
要是忘记下一个算法是什么就容易输入出错,也不适合大众使用;
因此为了将程序优化,所以在主函数中增加以下输入输出语句
和条件语句;
为了让程序更加严谨,因此还加入一些循环语句以及条件语句,那么主函数语句变为:
main()
inti,n,x,y,z;
请输入您想构建的链式表的元素个数:
请输入您想构建的链式表:
CreateList_L(L,n);
您构建的链式表是:
请输入您想查找的元素是第几个元素:
for(x=2;
(i<
=0||i>
n)&
x>
=0;
--x)
switch(x)
{
case2:
输入的数字错误,还有两次重新输入符合要求的数字的机会:
break;
case1:
输入的数字错误,还有一次重新输入符合要求的数字的机会:
case0:
输入的数字错误,您的输入机会已经用完\n"
returnERROR;
}
您查找的元素是:
请输入您想在第几个元素位置前插入元素:
for(y=2;
y>
--y)
switch(y)
{
}
请输入您想插入的元素:
形成的新链式表为:
请输入您想删除的元素是第几个元素:
for(z=2;
n+1)&
z>
--z)
switch(z)
{
case2:
case1:
case0:
}
您想删除的元素是:
p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性 链式 表示 实现 实习 报告