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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

线性表的基本操作实验报告.docx

1、线性表的基本操作 实验报告实验1 线性表的基本操作 姓名 小明 一、需求分析1程序的功能:实现基本线性表的运算:插入数据,删除数据,查找数据,求顺序表长度,遍历链表。2输入输出的要求:数据必须为整数并大于0,插入数据必须为一位整数;3测试数据 测试数据可由使用者自己输入。二、概要设计1本程序所用的抽象数据类型的定义:由顺序表,结构体通过指针连接组成;2主程序的流程及各程序模块之间的层次关系。 然后根据各个选项调用所需函数三、详细设计1定义相关的数据类型: 结构体链表SqList,其中包含 ElemType *elem; int length;int listsize; 2写出各模块的伪码算法;

2、插入数据:Status ListInsert(Sqlist &L,int i,ElemType e) int *q=&(L.elemi-1); ElemType *newbase,*p; if(i(L.length+1) return ERROR; if(L.length=L.listsize) newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType); if(!newbase)exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREMENT; f

3、or(p=&(L.elemL.length-1);p=q;-p) *(p+1)=*p; *q=e; +L.length; return OK;删除数据:Status ListDelete(Sqlist &L,int i,ElemType e) if(iL.length) return ERROR; ElemType *p,*q; p=&(L.elemi-1); e=*p; q=L.elem+L.length-1; for(+p;p=q;+p) *(p-1)=*p; -L.length; return OK;求表长:int ListLength(Sqlist L) return L.length

4、;Status GetElem(Sqlist &L,int i) if(iL.length) exit(OVERFLOW); return L.elemi-1;查找数据:Status GetElem(Sqlist &L,int i) if(iL.length) exit(OVERFLOW); return L.elemi-1;int LocationElem(Sqlist L,ElemType element) int i=0;for(i=0;iL.length;i+) if(L.elemi=element) printf(第%d个元素为%d.n,i+1,element);return i;3

5、画出函数的调用关系图。 四、使用说明及测试结果1输入初始元素值:2删除数据删除数据13、插入数据插入数据14、查找数据查找数据35、求长度0退出六、源程序#include #include #define TRUE 1#define FALSE 0#define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_SIZE 5 #define LISTINCREMENT 1 typedef int Status; typedef int ElemType; typedef struct

6、 ElemType *elem; /存储空间基址 int length; /当前长度 int listsize; /当前分配的存储容量 Sqlist; static Sqlist L;static ElemType element;Status InitList(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;Status DestroyList(Sql

7、ist &L) if(L.elem=NULL) return ERROR; else free(L.elem); return OK;Status ClearList(Sqlist &L) if(L.elem=NULL) exit(ERROR); int i; ElemType *p_elem=L.elem; for(i=0;iL.length;i+) *L.elem=NULL; L.elem+; L.elem=p_elem; return OK;Status ListEmpty(Sqlist L) int i; ElemType *p_elem=L.elem; for(i=0;iL.leng

8、th;i+) if(*L.elem!=0) L.elem=p_elem; return FALSE; L.elem+; return TRUE;int ListLength(Sqlist L) return L.length;Status GetElem(Sqlist &L,int i) if(iL.length) exit(OVERFLOW); return L.elemi-1;int LocationElem(Sqlist L,ElemType element) int i=0;for(i=0;iL.length;i+) if(L.elemi=element) printf(第%d个元素为

9、%d.n,i+1,element);return i;Status ListInsert(Sqlist &L,int i,ElemType e) int *q=&(L.elemi-1); ElemType *newbase,*p; if(i(L.length+1) return ERROR; if(L.length=L.listsize) newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType); if(!newbase)exit(OVERFLOW); L.elem=newbase; L.list

10、size+=LISTINCREMENT; for(p=&(L.elemL.length-1);p=q;-p) *(p+1)=*p; *q=e; +L.length; return OK;Status ListDelete(Sqlist &L,int i,ElemType e) if(iL.length) return ERROR; ElemType *p,*q; p=&(L.elemi-1); e=*p; q=L.elem+L.length-1; for(+p;p=q;+p) *(p-1)=*p; -L.length; return OK;void PrintList(Sqlist L)for

11、(int i=0;iL.length;i+)printf(%d ,L.elemi);/*主函数*/void main()int i;Sqlist La;InitList(La);printf(请输入%d个初始元素值:,LIST_INIT_SIZE);for(i=0;i=4;i+)scanf(%d,&La.elemi);La.length+;printf(存入的结果为:);PrintList(La);menu:printf(nn*请选择要对线性表进行的操作:*n1 显示,2 删除,3 插入,4 查找,5 比较,6 长度,0 退出n请选择操作序号:);int flag;scanf(%d,&flag

12、);switch(flag)case 1:printf(n);PrintList(La);break;case 2:printf(n请输入要删除元素的位置:);scanf(%d,&i);ElemType e;ListDelete(La,i,e);printf(改变后的线性表:);PrintList(La);break;case 3:printf(n请输入要插入的元素:);ElemType e;scanf(%d,&e);printf(请输入要插入的位置:);scanf(%d,&i);ListInsert(La,i,e);printf(改变后的线性表:);PrintList(La);break;case 4:printf(n请输入要查找元素的位置:);int i;scanf(%d,&i);e=GetElem(La,i);printf(第%d个元素的值是:%dn,i,e);break;case 5:int m;printf(n请输入比较的元素:);scanf(%d,&m);LocationElem(La,m);break;case 6:printf(n线性表元素个数为:%dn,ListLength(La);break;default:printf(n输入的选择不存在!n);break;case 0:printf(n谢谢使用!n); return;goto menu;

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

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