数据结构实验一 线性表的顺序存储结构和链式存储结构Word文档下载推荐.docx
- 文档编号:15949497
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:12
- 大小:91.31KB
数据结构实验一 线性表的顺序存储结构和链式存储结构Word文档下载推荐.docx
《数据结构实验一 线性表的顺序存储结构和链式存储结构Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验一 线性表的顺序存储结构和链式存储结构Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
顺序存储结构的抽象数据类型:
ADTSqList{
数据对象:
D={ai:
|ai∈ElemSet,i=1…n,n≥0}
数据关系:
R1={<
ai-1,ai>
|ai-1,ai∈D,i=2,…n≥0}
基本操作:
InitList_Sq(SqList*L)
操作结果:
构造一个空的线性表L。
inputlist(SqList*L)
初始条件:
线性表L已经存在
存储输入的数据元素。
outputlist(SqList*L)
输出表L。
}ADTSqList
链式存储结构的抽象数据类型:
ADTlinklist{
linklist*creatL(linklist*L)
output(linklist*L)
}ADTlinklist
2.本程序有三个模块:
⑴主程序模块
voidmain(){
初始化;
{
接受命令;
显示结果;
}
⑵线性表单元模块:
实现线性表抽象数据类型;
⑶结点结构单元模块:
定义线性表中的结点结构。
三、详细设计
⒈结点类型
顺序存储结构的结点类型:
typedefstruct{
ElemType*elem;
//存储空间基址
intlength;
//当前长度
intlistsize;
//当前分配的存储容量(以size(ElemType)为单位)
}SqList;
链式存储结构的结点类型:
typedefstructLnode
intscore;
structLnode*next;
}linklist;
//定义一个节点
2.对抽象数据类型中的部分基本操作的伪码算法如下:
顺序存储结构:
intInitList_Sq(SqList*L){//建立一个空的线性表
L->
elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!
L->
elem)exit(OVERFLOW);
length=0;
listsize=LIST_INIT_SIZE;
returnOK;
}
intinputlist(SqList*L)//输入线性表内容
inti,*p;
p=L->
elem;
printf("
请输入要存储元素的个数:
"
);
scanf("
%d"
&
length);
\n"
请输入存储元素值:
for(i=0;
i<
length;
i++)
(p+i));
return1;
intoutputlist(SqList*L)//输出线性表内容
%-5d"
L->
elem[i]);
链式存储结构:
{//建立一个单链表
linklist*p,*q;
intelem,flag=1;
L=(linklist*)malloc(sizeof(Lnode));
L)
{
分配空间失败"
returnERROR;
//分配空间失败
}
next=NULL;
p=L;
while(flag)
请输入元素(输入0结束输入):
elem);
if(elem!
=0)
q=(linklist*)malloc(sizeof(Lnode));
q)returnERROR;
q->
score=elem;
p->
next=q;
p=q;
else
flag=0;
return(L);
voidoutput(linklist*L)
{//按顺序输出元素
linklist*p;
next;
链表元素依次为\n"
while(p)
p->
score);
p=p->
3.主函数和其他函数的伪码算法
顺序存储机构:
intmain()
SqListLa;
InitList_Sq(&
La);
//创建一个新表La
inputlist(&
//输入数据元素
outputlist(&
//输出数据元素
return0;
voidmain()
{
linklist*L=NULL;
L=creatL(L);
output(L);
//按顺序输出元素
4函数调用关系
四、调试分析
⒈刚开始输入时,漏掉了一些变量参数的标记"
&
,有的则错加了"
,使得程序运行出来的结果不正确,使调试程序时费时不少。
⒉一开始不知道怎么构造输出数据的函数,后来想到了结构数组,顺利写出输出函数。
⒊算法的时空分析
各操作的算法时间复杂度比较合理
InitList_Sq为O
(1)
Inputlist,outputlist,creatL,output为O(n)。
4.本次实验采用数据抽象的程序设计方法,将程序化为三层次结构,设计时思路清晰,使调试也较顺利,各模块有较好的可重用性。
五、用户手册
⒈本程序的运行环境为windowsxp操作系统,执行文件为顺序存储.c和链式存储.c;
⒉进入演示程序后,完成编译,连接(即按下CtrlF5)进入演示界面,用户键入线性表的数据元素。
六、测试结果
顺序存储:
(1)键入CtrlF5,演示为:
(2)键入元素个数,演示为:
(3)键入任意数据,演示为:
(5)按回车,退出演示界面,回到编辑状态。
链式存储:
(2)键入任意数据,演示为:
七、附录:
题一源程序
顺序结构存储源程序:
#include<
stdio.h>
malloc.h>
conio.h>
#include<
stdlib.h>
#defineLIST_INIT_SIZE100//线性表存储空间的初始分配增量
#defineLISTINCREMENT100//线性表存储空间的分配增量
#defineOK1
#defineOVERFLOW-1
#defineElemTypeint
intInitList_Sq(SqList*L){
//构造一个空的线性表L。
//存储分配失败
//空间长度为0
//初始存储容量
intoutputlist(SqList*L)//输入线性表内容
//输入线性表元素
//输出线性表
链式结构存储源程序:
#defineERROR0
linklist*creatL(linklist*L)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构实验一 线性表的顺序存储结构和链式存储结构 数据结构 实验 线性 顺序 存储 结构 链式
![提示](https://static.bdocx.com/images/bang_tan.gif)