实验报告
一、实验序号:实验二(1)
二、实验名称:线性表的顺序实现
三、实验内容:实现线性表的顺序存储结构
四、实验要求:编制并调试出三个文件,实现线性表的各种操作,对输入的数据能够正确运行并得出相应结果。五、程序清单: ⒈ 头文件
//头文件linearlist.h //定义ElemType为int类型 typedef int ElemType; //线性表顺序存储类型 struct LinearList {
ElemType *elem; //存线性表元素 int length; //存线性表长度 int listsize; //存elem数组长度 };
//初始化线性表
void InitList(LinearList &L,int ms); //清空线性表
void ClearList(LinearList &L); //求线性表长度
int ListSize(LinearList L); //检查线性表是否为空
bool ListEmpty(LinearList L); //检查线性表是否为满
bool ListFull(LinearList L); //整体赋值
void Assume(LinearList &L1,LinearList &L2); //遍历线性表
void TraverList(LinearList L); //从线性表中查找元素
bool FindList(LinearList &L,ElemType &item); //更新线性表中的给定元素
bool UpdateList(LinearList L,int mark,const ElemType &item); //向线性表插人元素
bool InsertList(LinearList &L,const ElemType &item,int mark); //从线性表中删除元素
bool DeleteList(LinearList &L,ElemType &item,int mark); //对线性表进行有序输出
void OrderOutputList(LinearList L,int mark);
⒉ 实现文件
#include void InitList(LinearList &L,int ms) { L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if (!L.elem) cout<<\"ERROR!\"< //清空线性表 void ClearList(LinearList &L) { L.length=0; } //求线性表长度 int ListSize(LinearList L) { return L.length; } //检查线性表是否为空 bool ListEmpty(LinearList L) { if(L.length==0) return true; else return false; } //检查线性表是否为满 bool ListFull(LinearList L) { if(L.listsize //整体赋值 void Assume(LinearList &L1,LinearList &L2) { L1.length=L2.length; for(int i=0;i //遍历线性表 void TraverList(LinearList L) { for(int i=0;i bool FindList(LinearList &L,ElemType &item) { for(int i=0;i return false; } //更新线性表中的给定元素 bool UpdateList(LinearList L,int mark,const ElemType &item) { if(L.elem [mark]=item) return true; else return false; } //向线性表插人元素 bool InsertList(LinearList &L,const ElemType &item,int mark) { int *newbase,*p,*q; if(mark<0||mark>L.length) return false; if(L.length>=L.listsize) { newbase=(ElemType*)realloc(L.elem,(L.listsize+50)*sizeof(ElemType)); if(!newbase) cout<<\"ERROR\"< for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p; *q=item; L.length++; return true; } //从线性表中删除元素 bool DeleteList(LinearList &L,ElemType &item,int mark) { int *p,*q; if(mark<0||mark>L.length) return false; p=&(L.elem[mark]); item=*p; q=L.elem+L.length-1; for(++p;p<=q;++p) *(p-1)=*p; L.length--; return true; } //对线性表进行有序输出 void OrderOutputList(LinearList L,int mark) { ElemType x; for(int j=0;j x=L.elem[i]; L.elem[i]=L.elem[i+1]; L.elem[i+1]=x; } } cout<<\"将线性表有序输出为:\"; TraverList(L); } ⒊ 主文件 #include LinearList L1; LinearList L2; InitList(L1,100);//初始化线性表 InitList(L2,100); int n; cout<<\"请输入线性表长度:\"; cin>>n; cout<<\"请输入线性表\"< cout<<\"线性表长度为:\"< cout<<\"请输入需要查找的元素\"; cin>>x; cout<<\"是否找到待查找的元素(1为找到)\"< cout<<\"请输入待更新的元素\"; cin>>y; cout<<\"请输入需要更新的元素的位置:\"; cin>>z; cout<<\"是否更新成功(1为成功)\"< cout<<\"请输入需要插入的元素的位置:\"<<\" \"; cin>>m; cout<<\"请输入需要插入的元素:\"<<\" \"; cin>>a; InsertList(L2,a,m); cout<<\"线性表L2为\"< cout<<\"请输入需要删除的元素的位置:\"<<\" \"; cin>>b; DeleteList(L2,c,b); cout<<\"被删除的元素为:\"< 六、调试情况与运行结果 第一步输入线性表长度为10 第二步对线性表初始化并赋值1 3 5 7 9 2 4 6 8 10 第三步判断线性表是否为空是否为满 第四步清空线性表 第五步查找和更新元素6和11 第六步复制并输出 第七步在第5个位置插入13并输出 第八步在第7个位置删除4并输出 第九步将线性表有序输出 七、实验体会 1.对于线性表,我们刚开始接触,在心理上有些畏惧,很多问题不敢下手; 2.重新温习了已经学过的C语言和C++的知识,如动态分配数据空间,指针,数组,排序等问题; 3.用多文件保存很方便 4.对线性表有了进一步的掌握 5.线性表的实验对以后的实验奠定了一定的基础 6.只要细心、耐心的做,总会有收获,要锲而不舍,持之以恒,才会成功! 八、本次分工: 成绩等第: 教师签名: 批阅日期: 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务