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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

计算机软件技术基础实验一顺序表.docx

1、计算机软件技术基础实验一顺序表北京联合大学实验报告课程(项目)名称: 计算机软件技术基础实验一(顺序表 ) 学 院: 自动化 专 业: 信息处理与智能技术 班 级: 0910030206 成 绩: 学 号: 2009100302638 姓 名: 徐琪 学 号: 2009100302632 姓 名: 李京 2010年11月30日一.目的:(1).掌握线性表的概念. (2).熟练掌握线性表的顺序存储结构.(3).熟练掌握线性表在顺序存储结构上的运算. (4).了解测试的思想.二.内容: (1).编写算法实现顺序表中元素的逆置。要求按用户输入的数据建立一个顺序表。在逆置的过程中使用最少的辅助存储单元

2、。测试要求:在空表、长度为奇数和偶数的情况下测试程序运行情况。(2).己知顺序表中的元素非递减有序排列,编写算法删除顺序表中值相同的多余的元素。测试要求:在空表、有1组相同元素、有2组连续相同元素、有2组以上不连续相同元素的情况下测试程序运行情况。(3).编写算法,在非递减有序的顺序表中,插入一个给定的元素,插入后该顺序表仍然递增有序。测试要求:在空表、表头、表尾、表中间插入及位置非法的情况下测试程序运行情况。(4).有两个顺序表A(有m个元素)和B(有n个元素),其元素均按从小到大的升序排列。编写算法,将这两个顺序表合并成一个顺序表C,要求C也是按从小到大的升序排列。测试要求:在A与B均空、

3、A与B一个为空、A与B均不空的情况下测试程序运行情况。三算法设计1数据结构#include#include#include#define MAXSIZE 30struct SList int DataMAXSIZE; int Last; SList;2函数设计(1).函数名称:初始化.名字:InitSList.功能:初始化线性表.入口参数:L.出口参数:L.N-S图.源程序清单/*初始化线性表*/struct SList InitSList() struct SList L; L.Last=-1; return L;/*初始化线性表1*/struct SList InitSList1() st

4、ruct SList L1; L1.Last=-1; return L1;/*初始化线性表2*/struct SList InitSList2() struct SList L2; L2.Last=-1; return L2;/*初始化线性表3*/struct SList InitSList3() struct SList L3; L3.Last=-1; return L3;(2).函数名称:建立.名字:InputSList.功能:建立无序线性表.入口参数:L.出口参数:L.N-S图.源程序清单struct SList InputSList(struct SList L) int x=0; p

5、rintf(n请输入数据,结束输入-1!n); scanf(%d,&x); while(x!=-1) L.Data+L.Last=x; if(L.Last=MAXSIZE-1) printf(n顺序表已满!n); break; scanf(%d,&x); return L;(3).函数名称:建立1.名字:InputSList1.功能:建立有序线性表L1.入口参数:L1,x.出口参数:L1.N-S图.源程序清单/*建立有序线性表1*/struct SList InputSList1(struct SList L1) int x=0; printf(n请按从小到大顺序输入数据,结束输入-1!n);

6、 scanf(%d,&x); while(x!=-1) if (L1.Last=-1) L1.Data+L1.Last=x; else if( L1.DataL1.Last=x) L1.Data+L1.Last=x; else printf(n请按从小到大顺序输入数据!n); if(L1.Last=MAXSIZE-1) printf(n顺序表已满!n); break; scanf(%d,&x); return L1;/*建立有序线性表2*/struct SList InputSList2(struct SList L2) int x=0; printf(n请按从小到大顺序输入数据,结束输入-1

7、!n); scanf(%d,&x); while(x!=-1) if (L2.Last=-1) L2.Data+L2.Last=x; else if( L2.DataL2.Last=x) L2.Data+L2.Last=x; else printf(n请按从小到大顺序输入数据!n); if(L2.Last=MAXSIZE-1) printf(n顺序表已满!n); break; scanf(%d,&x); return L2;(4).函数名称:输出.名字:outputSList.功能:输出顺序线性表数据L1.入口参数:L1.出口参数:L1.N-S图.源程序清单/*输出顺序线性表1数据*/ voi

8、d outputSList(struct SList L1) int j; printf(n顺序表的数据为:n); if (L1.Last!=-1) for(j=0;j=L1.Last;j+) printf(%d ,L1.Dataj); else printf(顺序表为空!n); printf(n );/*输出顺序线性表2数据*/ void outputSList2(struct SList L2) int j; printf(n顺序表2的数据为:n); if (L2.Last!=-1) for(j=0;j=L2.Last;j+) printf(%d ,L2.Dataj); else prin

9、tf(顺序表为空!n); printf(n );(5).函数名称:插入.名字:InsertSList1.功能:向有序顺序线性表L1中插入数据x.入口参数:L1,x.出口参数:L1.N-S图.源程序清单struct SList InsertSList1(struct SList L1, int x) int j=0,i=0; if(L1.Last=MAXSIZE-1) printf(the List1 is fulln); return L1; while(L1.Datai=i;j-) L1.Dataj+1=L1.Dataj; L1.Datai=x; L1.Last+; return L1;(6

10、).函数名称:逆置.名字:nizhi.功能:将顺序表L1中的元素逆置.入口参数:L1.出口参数:L1.N-S图.源程序清单struct SList nizhi(struct SList L1) int i=0, j=L1.Last, k=0; if(L1.Last1) return(L1); while(ij) k=L1.Datai; L1.Datai=L1.Dataj; L1.Dataj=k; i+;j-; return L1;(7).函数名称:删除.名字:shanchu.功能:删除有序顺序表L1中值相同的多余的元素.入口参数:L1.出口参数:L1.N-S图.源程序清单struct SLis

11、t shanchu(struct SList L1) int i=0,j=0; if(L1.Last1) return L1; while(iL1.Last) if(L1.Datai=L1.Datai+1) for(j=i+2;j=L1.Last;j+) L1.Dataj-1=L1.Dataj; L1.Last-; else i+; return L1;(8).函数名称:合并.名字:hebing.功能:合并有序顺序表1、2到有序顺序表3中.入口参数:L1、L2、L3.出口参数:L3.N-S图.源程序清单struct SList hebing(struct SList L1,struct SLi

12、st L2,struct SList L3) int i=0,j=0,k=0; while(i=L1.Last&j=L2.Last) if(L1.DataiL2.Dataj) L3.Datak=L1.Datai; i+; k+; else L3.Datak=L2.Dataj; j+; k+; while(i=L1.Last) L3.Datak=L1.Datai; k+; i+; while(j=L2.Last) L3.Datak=L2.Dataj; k+; j+; L3.Last=k-1; return L3;(9).函数名称: 主函数.名字:main.功能:.入口参数:无.出口参数:无.N-

13、S图.源程序清单/*主菜单*/void mainmenu() printf( |*|n); printf( | 请输入选项编号(0-7) |n); printf( |*|n); printf( | 1-建立有序顺序表1 |n); printf( | 2-在有序顺序表1中插入数据 |n); printf( | 3-将有序顺序表1中元素逆置 |n); printf( | 4-删除顺序表1中值相同的多余的元素 |n); printf( | 5-建立无序顺序表 |n); printf( | 6-建立有序顺序表2 |n); printf( | 7-合并有序顺序表1.2到顺序表3中 |n); printf

14、( | 0-退出系统 |n); printf( |*|n);/*主函数*/void main() struct SList L; struct SList L1; struct SList L2; struct SList L3; int x; char i,choose; do mainmenu(); choose=getch(); switch(choose) case 1:L1=InitSList(); /建立有序顺序表1 L1=InputSList1(L1); outputSList(L1); break; case 2:printf( 请输入要插入的数据x: ); /向有序顺序线性表

15、1中插入数据x scanf(%d,&x); L1=InsertSList1(L1,x); printf(插入后); outputSList(L1); break; case 3:L1=nizhi(L1); /将有序顺序表1中元素逆置 printf(逆置后); outputSList(L1); break; case 4:L1=shanchu(L1); /删除顺序表1中值相同的多余的元素 printf(删除后); outputSList(L1); break; case 5:L=InitSList(); /建立无序顺序表 L=InputSList(L); printf(建立的无序顺序表为n);

16、outputSList(L); break; case 6:L2=InitSList2(); /建立有序顺序表2 L2=InputSList2(L2); outputSList(L2); break; case 7:L3=InitSList3(); /合并有序顺序表1.2 L3=hebing(L1,L2,L3); printf(合并后的顺序表3为); outputSList(L3); break; case 0:exit(0); /返回主菜单 default :printf(n %c为非法选项!请重新输入!n,choose); break; printf(n按0返回主菜单n); i=getch

17、(); while(i=0);四调试过程1问题名称:逆置出错 问题现象:例如输入1 2 3 4,逆置后为4 2 3 1 解决方法:将逆置源程序中的if(ij)改为while(ij)2问题名称:逆置问题 问题现象:逆置后无显示 解决方法:将主函数中nizhi(L)改为nizhi(L1)3问题名称:删除问题 问题现象:例如有序顺序表1 1 2 2 ,删除后为1 2 2 解决方法:将if(iL1.Last)改为while(iL1.Last)4问题名称:合并问题 问题现象:error C2018: unknown character 0xa3 解决方法:if后无分号5问题名称:合并问题 问题现象:合并

18、时将无序顺序表与有序顺序表2合并 解决方法:将无序顺序表和有序顺序表1重新命名6问题名称:插入问题 问题现象:例如在有序顺序表1 2 3 4中插入字母f后,显示-858993460 1 2 3 4 解决方法:未解决五运行结果分析1运行界面建立有序顺序表1在有序顺序表1中插入数据将有序顺序表1中元素逆置删除顺序表1中值相同的多余的元素建立无序顺序表建立有序顺序表2合并有序顺序表1.2到顺序表3中2测试结果(1). 将有序顺序表1中元素逆置测试项原始数据输入输出存在问题空表无无空无表长=5(奇数)1 2 3 4 5无5 4 3 2 1无表长=6(偶数)1 2 3 4 5 6无6 5 4 3 2 1

19、无(2).删除顺序表1中值相同的多余的元素测试项原始数据输入输出存在问题空表无无空无有1组相同元素1 2 2 3 4无1 2 3 4无有2组连续相同元素1 2 2 3 3 4无1 2 3 4无有2组以上不连续相同元素1 1 2 2 3 3 4 4无1 2 3 4无(3). 向有序顺序线性表1中插入数据x测试项原始数据输入输出存在问题空表无22无表头1 2 3 411 1 2 3 4无表尾1 2 3 441 2 3 4 4无表中间1 2 3 431 2 3 3 4无位置非法1 2 3 4(4). 合并有序顺序表1、2测试项原始数据输入输出存在问题1、2均为空表无无空无1为空表,2非空L2:2 3

20、 4无2 3 4无1非空,2为空表L1: 1 2 3无1 2 3无1、2均非空L1: 1 2 3L2: 2 3 4无1 2 2 3 3 4无六小结通过本次实验,我们对顺序表这部分知识有了更加深入的了解与掌握。在程序编译过程中,我们碰到了很多问题,有时会出现几十个错误,但我们还是一步步认真检查,有时不会的地方询问班里的其他同学,一起讨论,最终完整无误的改正了所有问题。有时也有很低级的错误出现,说明我们的基础还不够牢固,还需要努力学习。可能我们的报告中还存在着某些问题,程序也不够尽善尽美,但这次实验让我们都学到了很多,团队的合作,相互的帮助,都是完成一项任务中必不可少的。我们也将尽我们最大的努力完成今后的每一次实验。

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

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