成都理工大学数据结构实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科生实验报告
实验课程数据结构
学院名称信息科学与技术学院
专业名称电子信息科学与技术
学生姓名邓泉铃
学生学号201313020220
指导教师于真
实验地点6B604
实验成绩
二〇一四年十月二十九日二〇一四年十二月十日
数据结构实验报告
摘要
上机实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成不可或缺的一环节。实验着眼于原理与应用的结合,使读者学会如何把书上学到的只是运用到解决实际问题中来,培养动手能力。本次实验中每个实验题目采取统一格式,包括问题描述、系统设计、系统实现、效率分析四个部分。问题描述旨在让学生建立问题提出的背景,系统设计则让学生在分析问题的基础上设计一相关系统,在系统测试部分则需指出系统功能的具体实现并检验与问题描述中的要求是否相符,在效率分析部分在于让学生明白不仅要设计出能够实现功能的系统,更重的的事还要讲究效率,不忘对系统进行优化。
关键字:上机实验;程序设计;调试运行。
实验一线性表的应用
一、实验目的:
掌握线性表的基本结构和操作方法,培养学生灵活使用结构解决实际问题的能力。二、实验要求:
1.认真阅读和掌握本实验的程序。
2. 上机运行程序。
3. 保存和打印出程序的运行结果,并结合程序进行分析。
4. 按照操作需要,打印出文件清单和运行结果。
三、实验内容和结果:
上机运行给出程序后,实验结果如图:
第一步,输入一组数字如(5 4 9 8 7 6 3 8 5 1),用空格隔开,然后存于顺序表中。
第二步,输入你想要查找的数字(7),回车后出现的便是此数字所在的位置(3),
第三步,输入插入数字的位置(3)再输入要插入的数字(89),回车后出现的便是插入
数字后的顺序表,最后一位丢失。
第四步,输入要删除数字的位置回车后出现的便是新的顺序表,最后一位数回来了。
该程序实现了顺序表的查找,插入,和删除操作。
实验作业:设计一个100位以内的长整数加减运算的程序。源程序如下:
#include
#include
int getlength(char *ch)
{ int i;
for(i=0;i<100;i++)
if(ch[i]=='\0')break;
return i; }
void plusdata(int *dt,int *pdt,int k,int kk)
{ int i;for(i=0;i {dt[i]=dt[i]+pdt[i]; if(dt[i]>9){dt[i]-=10;dt[i+1]++}} if(dt[i]>9) {dt[i]-=10; dt[i+1]++;} if(dt[kk]!=0) i=kk; else i=kk-1; for(;i>=0;i--) cout< cout< void minusdata(int *dt,int *mdt,int k,int kk,int signal) {int i; for(i=0;i {dt[i]=dt[i]-mdt[i]; if(dt[i]<0) {dt[i]+=10; dt[i+1]--;}} if(dt[i]<0) {dt[i]+=10; dt[i+1]--;} while(dt[kk]==0) kk--; if(signal==0) cout<<'-'; for(i=kk;i>=0;i--) cout< cout< void main() {char ch1[100],ch2[100],ch0[2],ch; int data1[100],data2[100]; int i,j,k1,k2,flag=0; for(i=0;i<100;i++) {data1[i]=0; data2[i]=0;} cout<<"You can input the first data"< cin>>ch1; cout<<"You can input the second data"< cin>>ch2; cout<<"What operation you want?( + or - )"< cin>>ch; ch0[1]='\0'; j=0; while(ch1[j]=='0') j++; for(i=0;i<99-j;i++) ch1[i]=ch1[i+j]; j=0; while(ch2[j]=='0') j++; for(i=0;i<99-j;i++) ch2[i]=ch2[i+j]; k1=getlength(ch1); k2=getlength(ch2); j=k1; for(i=0;i { j--; ch0[0]=ch1[j]; data1[i]=atoi(ch0); if((ch1[i]<'0')||(ch1[i]>'9')) flag=1; } j=k2; for(i=0;i { j--; ch0[0]=ch2[j]; data2[i]=atoi(ch0); if((ch2[i]<'0')||(ch2[i]>'9')) flag=1;} if(flag==0) { if(ch=='+') { if(k1 plusdata(data2,data1,k1,k2); else plusdata(data1,data2,k2,k1);} if(ch=='-') {if(k1==k2) {while(data1[k1-1]==data2[k1-1]) k1-=1; if(data1[k1-1]>data2[k1-1]) minusdata(data1,data2,k2,k2,1); else minusdata(data2,data1,k2,k2,0);} else {if(k1>k2) minusdata(data1,data2,k2,k1,1); else minusdata(data2,data1,k1,k2,0);}}} else cout<<"You have input a invaluable char!"<