数据结构-顺序表C++_第1页
数据结构-顺序表C++_第2页
数据结构-顺序表C++_第3页
数据结构-顺序表C++_第4页
数据结构-顺序表C++_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

肇庆学院计算机学院实验报告专业:电子商务班级:11科技1班姓名:黎庆强学号:201124131147课程名称:顺序表学年学期1□/2□课程类别专业必修□限选□任选□实践□实验时间:2012年3月21日实验内容:1.编写函数,输入一组整型元素序列,建立一个顺序表。2.编写函数,实现对该顺序表的遍历。3.编写函数,在顺序表中进行顺序查找某一元素,查找成功那么返回其存储位置i,否那么返回错误信息。4.编写函数,实现在顺序表的第i个位置上插入一个元素x的算法。5.编写函数,实现删除顺序表中第i个元素的算法。6.编写利用有序表插入算法建立一个有序表的函数。7.编写函数,利用以上算法,建立两个非递减有序表,并把它们合并成一个非递减有序表。8.编写函数,实现输入一个元素x,把它插入到有序表中,使顺序表依然有序。9.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。实验目的及要求:目的:1.掌握顺序表的存储结构形式及其描述。2.掌握顺序表的建立、查找、插入和删除操作。要求:1.插入、删除时元素的移动原因、方向及先后顺序。2.理解不同的函数形参与实参的传递关系。实验内容、方法与步骤:〔使用附页填写并附在本页后〕实验结果:〔使用附页填写并附在本页后〕小结:通过这次的实验我学会了如何去运用顺序表的建立、查找、插入和删除操作,理解了不同的函数形参与实参的传递关系。分数:批阅老师:20年月日第页/共页肇庆学院计算机科学系实验报告〔附页〕实验内容、方法与步骤:#include<stdio.h>#include<malloc.h>//定义申请空间#definemaxsize520typedefintdatatype;typedefstruct{ datatypedata[maxsize]; intlast;}Seqlist;//定义了一个顺序表:SeqlistLvoidmenu();Seqlist*init_Seqlist();intinput_Seqlist(Seqlist*L);//输入数据intlocation_Seqlist(Seqlist*L);//查找数据intinsert_Seqlist(Seqlist*L,inti,datatypex);//插入数据intdelete_Seqlist(Seqlist*L);//删除数据intyouinsert_Seqlist(Seqlist*L,inti,datatypex);//用有序表插入法建立顺序表voidmerge_Seqlist(Seqlist*A,Seqlist*B,Seqlist*C);//建立两个非递减有序表并合成一个非递减有序表inti,x,a,success;intmain(){ intchoic=1; Seqlist*A; Seqlist*B; Seqlist*C; Seqlist*L; L=NULL; do{printf("******************************迎使用整型顺序表*****************************\n");printf("\t\t【1】输入数据【2】输出数据【3】查找数据\n\n");printf("\t\t【4】插入数据【5】删除数据【6】用有序表插入法建立顺序表\n\n");printf("\t\t【7】把元素x插入到有序表里,使有序表依然有序\n\n");printf("\t\t【8】建立两个非递减有序表并合成一个非递减有序表\n\n");printf("\t\t【9】退出\n");printf("*******************************************************************************\n");printf("请选择你要进行的操作【1-9】:"); scanf("%d",&choic);//读入一个数 while(choic<1||choic>9) {printf("******************************输入错误!请重新选择******************************\n"); scanf("%d",&choic);//读入第二个数 } switch(choic) { case1://输入数据 { L=init_Seqlist();//初始化 printf("请输入整型数据的个数:"); scanf("%d",&a);printf("请输入%d个整型数据:",a); success=input_Seqlist(L); break; } case2: { if(success==1) { for(i=0;i<=L->last;i++) printf("%6d",L->data[i]); } else printf("此表为空表!");printf("\n\n"); break; } case3: { printf("请输入你要查找的整型数据:"); scanf("%d",&a); success=location_Seqlist(L);//查找数据 if(success==-1) {printf("*******************这个整型数据%d不存在!********************\n\n",a); } else {printf("你要查的整型数据%d的位置是:%6d",a,success+1); printf("\n\n"); } break; } case4: { printf("请输入要插入的位置和整型数据:"); scanf("%d%d",&i,&x);//i为位置号,x为待插入数 success=insert_Seqlist(L,i,x);//插入数据 if(success==1) { for(i=0;i<=L->last;i++) { printf("%6d",L->data[i]); } } printf("\n\n"); break; } case5: { printf("请你输入要删除整型数据的位置:"); scanf("%d",&i); success=delete_Seqlist(L);//删除数据 if(success==1) { for(i=0;i<=L->last;i++) { printf("%6d",L->data[i]); } } printf("\n\n"); break; } case6: { L=init_Seqlist();//初始化 printf("请你输入要建立有序表的表长:"); scanf("%d",&a); printf("请输入%d个整型数据:",a); for(i=0;i<a;i++) {scanf("%d",&x); success=youinsert_Seqlist(L,i,x); } if(success==1) { for(i=0;i<=L->last;i++) { printf("%6d",L->data[i]); } } printf("\n\n"); break; } case7: { if(L==NULL) L=init_Seqlist();//初始化 printf("请输入要插入的整型数据:"); scanf("%d",&x);success=youinsert_Seqlist(L,i,x);if(success==1) { printf("插入后的数据顺序为:"); for(i=0;i<=L->last;i++) { printf("%6d",L->data[i]); } } printf("\n\n"); break; } case8: { A=init_Seqlist();//初始化 printf("请你输入第一个非递减有序表的表长:"); scanf("%d",&a); printf("请你输入%d个非递减的整型数据:",a); for(i=1;i<=a;i++) { scanf("%d",&x);insert_Seqlist(A,i,x); } B=init_Seqlist();//初始化 printf("请你输入第二个非递减有序表的表长:"); scanf("%d",&a); printf("请你输入%d个非递减的整型数据:",a); for(i=1;i<=a;i++) { scanf("%d",&x);insert_Seqlist(B,i,x); } C=init_Seqlist();//初始化merge_Seqlist(A,B,C); printf("合并后的非递减有序表为:"); for(i=0;i<=C->last;i++) { printf("%6d",C->data[i]); } printf("\n\n"); break; } case9: {printf("******************************谢谢使用整型顺序表!******************************\n"); break; } }}while(choic!=9);return0;}//主函数结束Seqlist*init_Seqlist()//初始化{ Seqlist*L; L=(Seqlist*)malloc(sizeof(Seqlist)); L->last=-1; returnL;}intinput_Seqlist(Seqlist*L)//输入数据{ L->last=a-1; for(i=0;i<=L->last;i++) { scanf("%d",&x); L->data[i]=x; } printf("\n\n");return(1); }intlocation_Seqlist(Seqlist*L)//查找数据{ inti=0; while(i<=L->last&&L->data[i]!=a) i++; if(i>L->last) return-1; else returni;printf("\n\n");return(1);}intinsert_Seqlist(Seqlist*L,inti,datatypex)//插入数据{ intj; if(L->last==maxsize-1)//表已经满了,不能再插了 { printf("表已经满了!"); return(-1); } if(i<1||i>(L->last+2))//检查插入位置的正确性 { printf("位置错误!"); return(0); } for(j=L->last;j>=i-1;j--) { L->data[j+1]=L->data[j]; } L->data[i-1]=x; L->last++; return(1);}intdelete_Seqlist(Seqlist*L)//删除数据{intj;if(i<1||i>(L->last+1)){ printf("不存在第%d个整型数据",i); return(0);}for(j=i;j<=L->last;j++) L->data[j-1]=L->data[j];L->last--; return(1); printf("\n\n");}intyouinsert_Seqlist(Seqlist*L,inti,datatypex)//用有序表插入法建立顺序表{ intj; if(L->last==m

温馨提示

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

评论

0/150

提交评论