下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构实验报告实验序号:2实验项目名称:顺序表的操作学号姓名专业、班级实验地点指导教师实验时间一、实验目的及要求1. 掌握线性表的顺序存储类型;2. 熟练掌握顺序表的基本操作和具体的函数实现。二、实验设备(环境)及要求微型计算机;windows 操作系统;Microsoft Visual Studio 6.0 集成开发环境。三、实验内容与步骤1. 设A、B均为用数组实现的List类型的顺序表,试设计一个函数Alternate( A,B),从表 A 中第 1 个元素开始,交替地用表A 和表 B 中元素组成一个新表。2. 顺序表表示和实现线性表的如下:# define LIST_INIT_SIZ
2、E 10# define LISTINCREMENT 5 typedef structElemType *elem; int length ;int ListSize; sqlist;int InitList_sq(sqlist *l) /*initial the list l*/l->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if (!l->elem)printf("无法分配空间!");return 1;elsel->length=0;l->ListSize=LIST_INIT
3、_SIZE;printf("ok");return 0;void main()sqlist L;InitList_sq(&L);【要求】 1、实现顺序表的插入、删除、按值查找等基本操作;2、假设构建的是非递增有序顺序表,设计算法实现从该有序顺序表中删除所有其值重复的元素,使得表中所有元素的值均不同。四、实验结果与数据处理1.2.详细记录程序在调试过程中出现的问题及解决方法。记录程序执行的结果(贴图)。五、分析与讨论对上机实践结果进行分析,上机的心得体会。五、教师评语成绩签名:日期:附源程序清单:1.#include<stdio.h>int main(vo
4、id)void Alternate(int * a,int * b);int * p;int i;int A5=1,3,5,7,9;int B5=2,4,6,8,10;printf("List A:n");for(i=0;i<5;i+)printf("%d ",Ai);printf("n");printf("List B:n");for(i=0;i<5;i+)printf("%d ",Bi);printf("n");printf("Final List:
5、n");Alternate(A,B);return 0;void Alternate(int * a,int * b)int i;int * p;int c10;p=c;for(i=0;i<10;i+)if(i%2=0)*(p+i)=*(a+i/2);else*(p+i)=*(b+(i-1)/2);for(i=0;i<10;i+)printf("%d ",*(p+i);printf("n");2.#include<iostream># define LIST_INIT_SIZE10# define LISTINCREME
6、NT5using namespace std;typedef structint* elem;/int* 型元素int length;/ 顺序表的实际长度int Listsize;/ 顺序表的最大长度sqlist;/1.初始化int InitList_sq(sqlist *l)int n;int* p;l->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int);if (!l->elem)printf(" 无法分配空间!");return 1;elsel->length=0;l->Listsize=LIST_INI
7、T_SIZE;printf(" 请输入顺序表元素数(1-10):");cin>>n;p=l->elem;/p 指向头指针for(int i=0;i<n;i+)/逐个赋值cin>>*p;p+;l->length+;return 0;/2.输出函数void put(sqlist &list)int i;for(i=0;i<list.length;i+)cout<<list.elemi<<"t"cout<<endl;/3.查找函数void locateElem(sqli
8、st &list)int i,j=0,b;cout<<" 请输如要查找的字符:n"cin>>b;for(i=0;i<list.length;i+)if(list.elemi=b)j=i+1;break;if(j)cout<<" 该数字的位置是:"<<j<<endl;elsecout<<" 很抱歉,表中没有这个数字,请重试!"<<endl;/4.插入函数void insert(sqlist &list)int i;cout<&
9、lt;" 您想在第几位插入数字:n"cin>>i;int x;cout<<" 请输入要插入的数字:n"cin>>x;int j;if(i<0|i>list.length)cout<<" 位置错误 "<<endl;put(list);elsefor(j=list.length;j>=i;j-)list.elemj=list.elemj-1;list.elemj=x;list.length+;cout<<" 插入操作完成后的顺序表:&quo
10、t;<<endl;put(list);/5.删除函数void delete1(sqlist &list)/ 删除第 i 个位置的数字的函数int i,b;cout<<" 请输入你想要删除数据的位置:"<<endl;cin>>i;if(i<0|i>list.length)cout<<" 输入错误! "<<endl;return;elseb=list.elemi-1;for(i=i-1;i<list.length-1;i+)list.elemi=list.ele
11、mi+1;-list.length;cout<<" 需要删除的元素是:"<<b<<endl;cout<<" 删除操作完成后的顺序表是:"<<endl;put(list);void delete2(sqlist &list)/ 删除指定数字的函数int b;cout<<" 输入您想删除的数字:"<<endl;cin>>b;int i,j=0;for(i=0;i<list.length;i+)if(list.elemi=b)j=i
12、+1;break;if(j!=0)for(;i<list.length-2;i+)list.elemi=list.elemi+1;-list.length;cout<<" 该位置是第 "<<i<<" 位 "<<endl;cout<<" 删除操作完成后的顺序表是:"<<endl;put(list);elsecout<<" 很遗憾,表中没有找到此数字,删除不成功,请重试!"<<endl;void delete3(sql
13、ist &list)/ 删除重复数字的函数if ( list.length<=0 )printf( "List is empty!");exit(1);int i=0,j,k;int temp;while (i<=list.length) / 循环检测j=i+1;temp=list.elemi;while (j<=list.length )/对于每一个i, 重复检测一遍后续元素if ( temp = list.elemj ) / 如果相等 , 后续元素前移for (k=j+1;k<=list.length;k+)list.elemk-1 =l
14、ist.elemk;list.length-;else j+;i+;/检测完 list.elemi, 检测下一个put(list);/-int main()int flag;sqlist l;InitList_sq(&l);put(l);cout<<endl<<"*"<<endl;cout<<" 请输入要进行的操作序号cout<<"1. 插入字符 "<<endl<<"2.:n"查找数字"<<endl<<
15、;"3.删除第i 位数字"<<endl<<"4.删除指定数字"<<endl<<"5. 删除重复数字"<<endl<<"0. 退出 "<<endl<<endl;cin>>flag;doswitch(flag)case 1:insert(l);break;case 2:locateElem(l);break;case 3:delete1(l);break;case 4:delete2(l);break;case 5:delete3(l);break;default:cout<<" 请重新输入 |代码错误 "<<endl;cout<<"* *"<<endl;cout<<" 请输入要进行的操作序号cout<<"1. 插入字符"<<endl<<"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026国网黑龙江省电力校园招聘(提前批)笔试模拟试题浓缩500题完整答案详解
- 2026秋季国家管网集团山东分公司高校毕业生招聘笔试备考题库(浓缩500题)带答案详解(a卷)
- 2026国网海南省电力公司高校毕业生提前批招聘(约450人)笔试备考题库浓缩500题附答案详解(能力提升)
- 2026秋季国家管网集团山东分公司高校毕业生招聘笔试模拟试题(浓缩500题)附参考答案详解(a卷)
- 2026国家管网集团高校毕业生招聘笔试模拟试题(浓缩500题)及答案详解1套
- 2026秋季国家管网集团建设项目管理公司高校毕业生招聘考试备考试题(浓缩500题)及参考答案详解(轻巧夺冠)
- 国家管网集团湖南公司2026届秋季高校毕业生招聘考试备考题库(浓缩500题)及参考答案详解(达标题)
- 2026秋季国家管网集团西部管道公司高校毕业生招聘考试参考题库(浓缩500题)完整参考答案详解
- 2026国网海南省电力公司高校毕业生提前批招聘笔试模拟试题浓缩500题含答案详解(突破训练)
- 2026国家管网集团高校毕业生招聘考试备考题库(浓缩500题)及答案详解【夺冠系列】
- 小核酸药物技术发展现状与趋势
- 消化道出血护理ppt(共17张PPT)
- 高中政治统编版 必修四 哲学与文化第六课 6.1 价值与价值观(19张ppt)
- 人工智能第2章知识表示课件
- 机动车检测站应急预案
- [PPT]汶川地震灾区水利水电工程震害调查及分析
- GB∕T 40802-2021 通用铸造碳钢和低合金钢铸件
- 地震与地震灾害第四章-海啸篇课件
- 给煤机安装作业指导书
- 服务与被服务的关系
- T∕ACSC 01-2022 辅助生殖医学中心建设标准(高清最新版)
评论
0/150
提交评论