数据结构上机实1的线表的顺序存储及对其的基本操作.doc_第1页
数据结构上机实1的线表的顺序存储及对其的基本操作.doc_第2页
数据结构上机实1的线表的顺序存储及对其的基本操作.doc_第3页
全文预览已结束

下载本文档

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

文档简介

广西大学数信学院实 验 报 告 2011年 9 月 26 日 课程名称数据结构项目名称顺序表的应用实验者123专业年级信息管理类 101班学号888888内容与要求主要实验内容及要求:以顺序表为基本存储结构,利用线性表的基本运算,编写一个功能较为丰富的应用程序。例如对于顺序存储的线性表: 第一个表输入的数据如下(学号,成绩):(1,70),(2,85), (3,75), (4,90),第二个表输入的数据如下(学号,成绩):(5,60),(6,80), (7,76),(8,50)。编写程序至少实现下列功能:1删除:从线性表中删除具有某种特征(如某学号)的元素并由函数返回.2插入:向线性表中插入元素并使之满足成绩从大到小排序;3. 合并:合并两个线性表并使之满足成绩从大到小排序;4. 统计:对表进行一些数据统计(如求平均分)。5. 查找:对表中的元素进行查找,找到相应的信息,然后读取出来。过 程 与 结 果实验过程: 第一步,为进行以上的操作,首先构造几个常用的函数,InitList,DestroyList,ShowList; 第二步,根据的题目的要求,分别构造ListInsert(),MergeList(),AverageList(),DeleteList(),loclist (),这四个函数; 1)、ListInsert()函数的解释:要进行该项操作,首先要确定插入元素的位置,于是首先进行元素位置的寻找,一旦位置符合要求,就将从该处起的以后的所有元素往后移动一位,最后生成所求的表! 2)、MergeList()函数的解释:将两个线性表合并并排序,首先构造两个指针,其分别指向两个线性表的头结点,进行比较,比较后,将按要求的元素存放在另外一个线性表中,然后依次进行操作,直至其中的一个线性表的元素存放为空,那么剩下的线性表就依序存放到表的末尾,然后返回输出就可以了! 3)、AverageList()函数的解释:首先访问该线性表的初始位置,在开始的时候预先定义一个计算总和的标记,利用指针,从线性表的开始到结束,把所有的元素加起来,然后除以该线性表的长度就得到其平均分! 4)、DeleteList()函数的解释:找到线性表的头指针,首先确定要删除的位置,然后在线性表中进行寻找,一旦寻找正确,将该元素除掉,以后的所有元素全部向前移动一位,表长减少一个单位! 5)、loclist ()函数的解释:找到线性表的指针,首先确定要查找的元素,然后在线性表中进行寻找,一旦需找到,将该元素的所有相关信息都显示出来!实验结果:见附件!评语评分教师签名: 年 月 日#include stdio.h#define OK 1#define ERROR 0#define MAXSIZE 20/*定义数据元素类型*/typedef structint no;int grade;ElemType;/*定义顺序线性表*/typedef structElemType elemMAXSIZE;int length;SqList;/*初始化线性表*/void InitList(SqList *pL)pL-length=0;/*建立(输入)线性表*/void CreatList(SqList *pL)int i;printf(n准备建立线性表,请输入线性表的长度:);scanf(%d,&pL-length);for(i=0;ilength-1;i+)printf(数据%d=,i+1);scanf(%d,%d,&pL-elemi.no,&pL-elemi.grade);printf(n);/*显示线性表*/void ShowList(SqList pL)int i;for(i=0;ilength=MAXSIZE)return ERROR;/*找插入点的位置*/for(i=0;ilength;i+)if (e.gradepL-elemi.grade)break;/*向后移动数据*/for(j=pL-length+1;ji;j-)pL-elemj=pL-elemj-1;pL-elemi=e;pL-length=pL-length+1;return OK;/*合并两个有序表*/void MergeList(SqList La,SqList Lb,SqList *Lc)int i;for (i=0;ielemi.no=La.elemi.no;Lc-elemi.grade=La.elemi.grade;for (i=0;ielemi+La.length.no=Lb.elemi.no;Lc-elemi+La.length.grade=Lb.elemi.grade;Lc-length=La.length+Lb.length;/*求平均分*/void AverageList(SqList Lc)int i;float s;printf(平均分:n);s=0;for(i=0;iLc.length;i+)s=s+Lc.elemi.grade;printf(s=%f,s/Lc.length);/*删除元素*/void DeleteList(SqList *Lc,int n)int i,j;for(i=0;ilength;i+)if (Lc-elemi.no=n) printf(n);printf(%d ,Lc-elemi.no);printf(%d ,Lc-elemi.grade);printf(n);break;for(j=i;jlength;j+)Lc-elemj.no=Lc-elemj+1.no;Lc-elemj.grade=Lc-elemj+1.grade;Lc-length-;/*查找元素*/void LocList(SqList Lc)int i,key;printf(请输入要查找学生的学号:);scanf(%d,&key);for(i=0;iLc.length;i+)if (Lc.elemi.no=key) printf(查找成功,在第%d位置找到该学生:,i+1);printf(学号:%d ,Lc.elemi.no);printf(成绩:%d ,Lc.elemi.grade);printf(n);break;if (i=Lc.length) printf(查找不成功n);/*主函数*/main()SqList La,Lb,Lc;ElemType e;CreatList(&La);printf(第一个线性表A:n);ShowList(La);CreatList(&Lb);printf(第二个线性表B:n);ShowList(Lb);e.no=4;e.grade=65;ListInsert(&La,e);e.no=5;e.grade=70;ListInsert(&La,e);e.no=6;e.grade=86;ListInsert(&La,e);printf(插入数据后的线性表A:n

温馨提示

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

评论

0/150

提交评论