ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:91.31KB ,
资源ID:3038549      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3038549.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验一 线性表的顺序存储结构和链式存储结构.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验一 线性表的顺序存储结构和链式存储结构.docx

1、数据结构实验一 线性表的顺序存储结构和链式存储结构中山大学新华学院实验报告课程名称: 数据结构 实验名称: 实验一 线性表的顺序存储结构和链式存储结构 班 级: 09级计算机 学生姓名: 郑永坤 学号: * 指导教师评定: 签 名: 题目:利用线性表的顺序存储结构和链式存储结构分别存储数据并把数据输出。一、需求分析 本演示程序分别用顺序存储结构和链式存储结构存储数据并把数据输出。 在演示过程序中,用户敲击键盘,输入数据存储,即可看到数据的输出。 程序执行的命令包括: (1)定义结构体 (2)建立空表 (3)构造输入数据的函数 (4)构造输出数据的函数二、概要设计 为实现上述算法,需要线性表的抽

2、象数据类型:顺序存储结构的抽象数据类型:ADT SqList 数据对象:D=ai:|aiElemSet,i=1n,n0数据关系:R1=|ai-1,aiD,i=2,n0基本操作:InitList_Sq(SqList *L)操作结果:构造一个空的线性表L。inputlist(SqList *L)初始条件:线性表L已经存在操作结果:存储输入的数据元素。 outputlist(SqList *L)初始条件:线性表L已经存在操作结果:输出表L。ADT SqList链式存储结构的抽象数据类型:ADT linklist 数据对象:D=ai:|aiElemSet,i=1n,n0数据关系:R1=|ai-1,ai

3、D,i=2,n0基本操作:linklist *creatL(linklist *L)初始条件:线性表L已经存在操作结果:存储输入的数据元素。 output(linklist *L) 初始条件:线性表L已经存在操作结果:输出表L。ADT linklist2. 本程序有三个模块: 主程序模块void main()初始化;接受命令;显示结果; 线性表单元模块:实现线性表抽象数据类型; 结点结构单元模块:定义线性表中的结点结构。三、详细设计结点类型顺序存储结构的结点类型:typedef struct ElemType * elem; /存储空间基址 int length; /当前长度 int list

4、size; /当前分配的存储容量(以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-lists

5、ize=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;ilength;i+) scanf(%d,(p+i); return 1;int outputlist(SqList *L) /输出线性表内容 int i,*p; p=L-elem; for(i=0;ilength;i+) printf(%-5d,L-elemi); r

6、eturn 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!=0) q=(linklist*)malloc(sizeof(Lnode); if(!q) return ER

7、ROR;/分配空间失败 q-score=elem; p-next=q; p=q; p-next=NULL; else flag=0; return(L);void output(linklist *L)/按顺序输出元素 linklist *p; p=L-next; printf(链表元素依次为n); while(p) printf(%-5d,p-score); p=p-next; printf(n);3.主函数和其他函数的伪码算法顺序存储机构:int main() SqList La; InitList_Sq(&La);/创建一个新表La inputlist(&La);/输入数据元素 outp

8、utlist(&La);/输出数据元素 return 0;链式存储结构:void main() linklist *L=NULL; L=creatL(L); output(L);/按顺序输出元素4 函数调用关系顺序存储结构:链式存储结构:四、调试分析 刚开始输入时,漏掉了一些变量参数的标记&,有的则错加了&,使得程序运行出来的结果不正确,使调试程序时费时不少。 一开始不知道怎么构造输出数据的函数,后来想到了结构数组,顺利写出输出函数。 算法的时空分析 各操作的算法时间复杂度比较合理 InitList_Sq为O(1)Inputlist,outputlist,creatL,output为O(n)。

9、4.本次实验采用数据抽象的程序设计方法,将程序化为三层次结构,设计时思路清晰,使调试也较顺利,各模块有较好的可重用性。五、用户手册 本程序的运行环境为windows xp操作系统,执行文件为顺序存储.c和链式存储.c; 进入演示程序后,完成编译,连接(即按下Ctrl F5)进入演示界面,用户键入线性表的数据元素。六、测试结果顺序存储:(1)键入Ctrl F5,演示为: (2)键入元素个数,演示为: (3)键入任意数据,演示为: (5) 按回车,退出演示界面,回到编辑状态。链式存储:(1)键入Ctrl F5,演示为: (2)键入任意数据,演示为: (5) 按回车,退出演示界面,回到编辑状态。七、

10、附录:题一源程序顺序结构存储源程序:#include#include#include#include #define LIST_INIT_SIZE 100 /线性表存储空间的初始分配增量#define LISTINCREMENT 100 /线性表存储空间的分配增量#define OK 1#define OVERFLOW -1#define ElemType int typedef struct ElemType * elem; /存储空间基址 int length; /当前长度 int listsize; /当前分配的存储容量(以size(ElemType)为单位)SqList;int Ini

11、tList_Sq(SqList *L) /构造一个空的线性表L。 L-elem=(ElemType * )malloc(LIST_INIT_SIZE * sizeof(ElemType); if(!L-elem) exit(OVERFLOW);/存储分配失败 L-length=0; /空间长度为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

12、); printf(请输入存储元素值:); for(i=0;ilength;i+) scanf(%d,(p+i); return 1;int outputlist(SqList *L) /输入线性表内容 int i,*p; p=L-elem; for(i=0;ilength;i+) printf(%-5d,L-elemi); return 1;int main() SqList La; InitList_Sq(&La);/创建一个新表La inputlist(&La); /输入线性表元素 outputlist(&La); /输出线性表 return 0;链式结构存储源程序:#include #

13、include #define OK 1#define ERROR 0typedef struct Lnode int score; struct Lnode *next;linklist;/定义一个节点 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!=0) q=(linklist*)malloc(sizeof(Lnode); if(!q) return ERROR;/分配空间失败 q-score=elem; p-next=q; p=q; p-next=NULL; else flag=0; return(L);void output(linklist *L)/按顺序输出元素 linklist *p;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1