- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[数据结构]实验一线性表的顺序存储结构和链式存储结构
中山大学新华学院实验报告
课程名称: 数据结构 实验名称: 实验一 线性表的顺序存储结构和链式存储结构
班 级: 09级计算机 学生姓名: 郑永坤 学号:
指导教师评定: 签 名:
题目:利用线性表的顺序存储结构和链式存储结构分别存储数据并把数据输出。
一、需求分析
⒈ 本演示程序分别用顺序存储结构和链式存储结构存储数据并把数据输出。
⒉ 在演示过程序中,用户敲击键盘,输入数据存储,即可看到数据的输出。
⒊ 程序执行的命令包括:
(1)定义结构体 (2)建立空表 (3)构造输入数据的函数 (4)构造输出数据的函数
二、概要设计
⒈ 为实现上述算法,需要线性表的抽象数据类型:
顺序存储结构的抽象数据类型:
ADT SqList {
数据对象: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已经存在
操作结果:输出表L。
}ADT SqList
链式存储结构的抽象数据类型:
ADT linklist {
数据对象:D={ai:|ai∈ElemSet,i=1…n,n≥0}
数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2,…n≥0}
基本操作:
linklist *creatL(linklist *L)
初始条件:线性表L已经存在
操作结果:存储输入的数据元素。
output(linklist *L)
初始条件:线性表L已经存在
操作结果:输出表L。
}ADT linklist
2. 本程序有三个模块:
⑴ 主程序模块
void main(){
初始化;
{
接受命令;
显示结果;
}
}
⑵ 线性表单元模块:实现线性表抽象数据类型;
⑶ 结点结构单元模块:定义线性表中的结点结构。
三、详细设计
⒈结点类型
顺序存储结构的结点类型:
typedef struct{
ElemType * elem; //存储空间基址
int length; //当前长度
int listsize; //当前分配的存储容量(以size(ElemType)为单位)
}SqList;
链式存储结构的结点类型:
typedef struct Lnode
{
int score;
struct Lnode *next;
}linklist;//定义一个节点
2.对抽象数据类型中的部分基本操作的伪码算法如下:
顺序存储结构:
int InitList_Sq(SqList *L){//建立一个空的线性表
L-elem=(ElemType * )malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L-elem) exit(OVERFLOW);
L-length=0;
L-listsize=LIST_INIT_SIZE;
return OK;
}
int inputlist(SqList *L) //输入线性表内容
{
int i,*p;
p=L-elem;
printf(请输入要存储元素的个数:);
scanf(%d,L-length);
printf(\n);
printf(请输入存储元素值:);
for(i=0;iL-length;i++)
scanf(%d,(p+i));
return 1;
}
int outputlist(SqList *L) //输出线性表内容
{
int i,*p;
p=L-elem;
for(i=0;iL-length;i++)
printf(%-5d,L-elem[i]);
return 1;
}
链式存储结构:
linklist *creatL(linklist *L)
{//建立一个单链表
linklist *p,*q;
int elem,flag=1;
L=(linklist*)malloc(sizeof(Lnode));
if(!L)
{
printf(分配空间失败);
return ERROR;//分配空间失败
}
L-next=NULL;
p=L;
while(flag)
{
printf(请输入元素(输入0结束输入):);
scanf(%d,elem);
if(elem
您可能关注的文档
最近下载
- 新生儿肠造瘘术后营养支持实践指南(2024版)解读PPT课件.pptx VIP
- 2022大理农林职业技术学院招聘笔试真题及参考答案详解一套.docx VIP
- 19S406 建筑排水管道安装-塑料管道.pdf VIP
- 供电线路工程施工投标方案技术标.docx
- imt面向2030及未来发展的框架和总体目标建议书内容 .pdf VIP
- NBT 32047-2018光伏发电站土建施工单元工程质量评定标准.docx VIP
- 2024人教版PEP英语三年级上册Unit 4Plants around usAB卷.pdf
- 浪潮英信服务器 NF5468M6 产品技术白皮书.pdf VIP
- bga返修台_zm-r5860说明书8800元.pdf VIP
- 2025能源行业发展蓝皮书-新能源发展现状及趋势.pdf VIP
文档评论(0)