顺序表的定义及基本操作.doc_第1页
顺序表的定义及基本操作.doc_第2页
顺序表的定义及基本操作.doc_第3页
顺序表的定义及基本操作.doc_第4页
顺序表的定义及基本操作.doc_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告实验题目 顺序表的定义及基本操作 实验时间一、实验目的、意义(1)掌握线性表顺序存储结构的特点。(2)熟练掌握顺序表的基本运算,理解用它们表示时插入与删除操作的算法。(3)加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力二、实验内容及要求说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。具体要求:建立顺序表,完成顺序表的基本操作:初始化、插入、删除、输出(遍历)、销毁, 置空表、求表长、查找元素、判线性表是否为空等。(参见教材19页)实验提示:(1)定义顺序表:SList,完成顺序表的基本操作,生成头文件SList.h。参考运行界面:三、实验所涉及的知识点指针,数组,函数 四、实验记录 (调试过程及调试中遇到的问题及解决办法,其他算法的存在与实践等。)冒泡排序法五、实验结果及分析(所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图方式给出。) 创建书序表按从小到大的顺序排列算出顺序表的长度删除指定位置的数据查找元素退出六、总结与体会(调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等。)这次实验,让我发现原来自己的C语言编程能力是如此不足,也让我学会了很多新知识。七、程序清单(包含注释)头文件:/*/* 顺序表头文件 */*/#include stdio.h#include malloc.h#define N 20 /定义顺序表存储空间的初始分配量struct list /将结构体命名为listint len;int vN; ;/redefine list ist LIST or rename with caplocktypedef struct list LIST; /*输入函数 */void myinput(LIST *alist)int i,len,t;W:printf(输入顺序表的长度n);scanf(%d,&len);/判断要分配的内存是否大于最大内存空间if (lenN ) printf(超过数组列表的最大长度,请输入1-20之间的数!n); goto W; /(*alist).len=len; /this statement same as follows alist-len=len; printf(输入顺序表的元素n);for (i=0;ilen;i+) scanf (%d,&t); alist-vi=t;/*输出函数 */void myoutput(LIST *alist)int i; printf(顺序表的元素是: n);for (i=0;ilen;i+) printf(%dt,alist-vi);printf(n);/*删除指定数据函数*/void myDelete(LIST *alist,int position)int j;if (positionalist-len)|(alist-lenvposition);for (j=position;jlen;j+) alist-vj=alist-vj+1; alist-len=alist-len-1;printf(n);/*插入函数 */void myInsert(LIST *alist,int position,int x)int j;if (positionalist-len)|(alist-lenlen-1;j=position;j-) alist-vj+1=alist-vj; alist-vposition=x; alist-len=alist-len+1;printf(n);/*从小到大排序函数*/void mySort(LIST *alist)int k, t, m;for(k=0; k len; k+)for(t=k; t len; t+)if(alist-vk alist-vt)m = alist-vk;alist-vk = alist-vt;alist-vt = m;/*求表长函数*/void ListLength(LIST *alist)int l;l = alist-len;printf(顺序表的长度是:%dn, l);/*查找元素函数 */int ListSeek(LIST *alist)int i;int e;scanf(%d, &e);for(i = 0; i len; i+)if(alist-vi = e)printf(元素 %d的位置是:%dn, e, i);return 1;return 0;/*清空顺序表函数 */void SetNull(LIST *alist)alist-len = 0;/*判断顺序表是否为空函数*/void ListCheck(LIST *alist)if(alist-len = 0)printf(顺序表是空的!n);源代码:/*线性顺序表*/#include stdio.h#include stdlib.h#include SList.h/*主函数*/void main()LIST mylist; /定义结构体对象int pos;int x;int k;/mylist=(LIST*)malloc(sizeof(LIST);myinput(&mylist); /调用myinput初始化函数myoutput(&mylist); /调用myoutput输出函数/*功能界面 */Z:printf(nt*);printf(nt* 请你输入相应的操作序号进行操作 *);/printf(nt* 1 初始化顺序表 *);/printf(nt* 1 输出顺序表的元素 *);printf(nt* 1 指定位置删除数据 *);printf(nt* 2 求表长 *);printf(nt* 3 判断顺序表是否为空 *);printf(nt* 4 查找元素 *);printf(nt* 5 置空表 *);printf(nt* 6 从小到大排列顺序表 *);printf(nt* 7 指定位置插入数据 *);printf(nt* 0 退出 *n);printf(t*);printf(n请选择功能:);scanf(%d,&k);switch(k)case 1: /在指定位置删除数据printf(输入要删除的元素的位置:);scanf(%d,&pos);myDelete(&mylist,pos);myoutput(&mylist);goto Z;break;case 2: ListLength(&mylist);/调用求表长的函数goto Z;break;case 3:ListCheck(&mylist);/判断顺序表是否为空goto Z;break;case 4:/查找元素位置printf(请输入要查找的数据元素:);if(ListSeek(&mylist);elseprintf(该数据元素不存在!n);goto Z;break;case 5: SetNull(&mylist);/清空顺序表ListLength(&mylist);goto Z;break;case 6: mySort(&mylist);/从小到大排序myoutput(&mylist);goto Z;break;case 7:/在指定位置插入数据pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论