数据结构(实验一)

article/2025/10/4 18:37:00

第一次写报告,虽然有点简单,但还是要勉励自己再接再厉。加油

 继续努力。

1.实验目的(结出本次实验所涉及并要求掌握的知识点)

1.掌握顺序表的存储结构形式及描述方法和基本运算的实现;

2.掌握用顺序表设计合理的数据结构,编写有关运算的算法。

2.实验内容(结出实验内容具体描述)

1.编写算法函数reverse(sque* l),实现顺序表的倒置;

2.编写算法函数spirt(sque *l1,sque* l2,sque* l3),将顺序表l1中的数据分类,奇数放在l2中,偶数放在l3中;

3.已知顺序表l1,l2均由从下到大排好序,请用尽可能快的方法将l1,l2中的数据合并到l3中,使数据在l3中按升序排列,编写函数merge(sque *l1,sque* l2,sque* l3 ).

4.假设顺序表la和lb分别存放在两个整数集合,编写函数inter(sque *l1,sque* l2,sque* l3)将l1,l2的交集存放到l3中.

5.编写函数partion(sque* l),尽可能快的将顺序表*l中的奇数调整到表的左边,偶数在右边,并分析算法的时间复杂度.

3.算法描述及实验步骤(用适当的形式表达算法设计思想与算法实现步骤)

#include <iostream>#include <cstdio>#define maxsize 100using namespace std;typedef int datatype;typedef struct{datatype a[maxsize];int size;} sque;void init(sque *st){st->size = 0;}void input(sque *st){init(st);datatype x;cout << "输入一组数据,最多100个数,以0位结束符" << endl;cin >> x;while (x){st->a[st->size++] = x;cin >> x;}}void output(sque *st){for (int i = 0; i < st->size; i++){cout << st->a[i] << ' ';if ((i + 1) % 10 == 0)cout << endl;}cout << endl;}void reverse(sque *st)//采用以中间为界首尾交换,依次向中间靠拢的思想{int temp = st->size;for (int i = 0; i < (st->size) / 2; i++)swap(st->a[i], st->a[--temp]);}void sprit(sque *l1, sque *l2, sque *l3)//采用从头到尾直接遍历判断并分类的思想{init(l2);init(l3);for (int i = 0; i < l1->size; i++){if ((l1->a[i]) % 2 == 1)l2->a[l2->size++] = l1->a[i];elsel3->a[l3->size++] = l1->a[i];}}void merge(sque *l1, sque *l2, sque *l3)//采用两顺序表从头开始比较大小小的进新表并进入下一个位置,大的不变,一表读完另一表直接进新表.{init(l3);for (int i = 0, j = 0; i < l1->size || j < l2->size;){if (l1->size != i && l2->size != j){if (l1->a[i] < l2->a[j])l3->a[l3->size++] = l1->a[i++];else if (l1->a[i] > l2->a[j])l3->a[l3->size++] = l2->a[j++];else{l3->a[l3->size++] = l1->a[i++];l3->a[l3->size++] = l2->a[j++];}}if (l1->size == i)l3->a[l3->size++] = l2->a[j++];else if (l2->size == j)l3->a[l3->size++] = l1->a[i++];}}void inter(sque *l1, sque *l2, sque *l3)//二重循环依次寻找相同的数,找到后判断新表中是否有这个数,没有则存入这个数{init(l3);for (int i = 0; i < l1->size; i++)for (int j = 0; j < l2->size; j++)if (l1->a[i] == l2->a[j]){int flag = 1;for (int k = 0; k < l3->size; k++)if (l3->a[k] == l1->a[i]){flag = 0;break;}if (flag == 1)l3->a[l3->size++] = l1->a[i];}}void partion(sque *l){for (int i = 0, j = l->size - 1; i < j;)//从两端开始判断首为偶数,尾为奇数则交换,其余视情况做相应加减.//时间复杂度为O(n);{if ((l->a[i]) % 2 == 1){if ((l->a[j]) % 2 == 0)j--;i++;}else if ((l->a[i]) % 2 == 0){if ((l->a[j]) % 2 == 1)swap(l->a[i++], l->a[j]);j--;}}}int main(){// sque l;// input(&l);// output(&l);// reverse(&l);// output(&l);// sque l1, l2, l3;// input(&l1);// sprit(&l1, &l2, &l3);// output(&l1);// output(&l2);// output(&l3);// sque l1, l2, l3;// input(&l1);// input(&l2);// merge(&l1, &l2, &l3);// output(&l3);// sque l1, l2, l3;// input(&l1);// input(&l2);// inter(&l1, &l2, &l3);// output(&l3);// sque l;// input(&l);// partion(&l);// output(&l);system("pause");return 0;}

  1. 调试过程及运行结果(详细记录在调试过程中出现的问题及解决方法。记录实验执行的结果)
  1.  样例1 输入1 2 3 4 5 6 0 输出6 5 4 3 2 1 正确

样例2 输入1 3 4 9 6 5 0 输出5 6 9 4 3 1 正确

  1.  样例1 输入1 2 3 4 5 6 0 输出1 3 5

2 4 6正确

样例2 输入1 3 5 7 10 6 0 输出1 3 5 7

10 6 正确

  1.  样例1 输入1 2 3 0 4 5 6 0 输出1 2 3 4 5 6 正确

样例2 输入1 5 9 0 3 7 8 0 输出1 3 5 7 8 9 正确

  1.  样例1 输入1 2 3 0 4 5 3 0 输出3 正确

样例2 输入5 6 9 0 4 5 6 0 输出5 6 正确

  1.  样例1 输入1 2 3 4 5 6 0 输出1 5 3 4 2 6 正确

样例2 输入5 6 8 9 7 10 5 6 0 输出5 5 7 9 8 10 6 6 正确

    


http://chatgpt.dhexx.cn/article/NcH9TCj7.shtml

相关文章

数据结构实验

1.有序数组的插入 代码&#xff1a; bool Insert( List L, ElementType X ){//溢出if(L->LastMAXSIZE-1) return false;//插入在最后一位if(L->Data[L->Last] > X){L->Data[L->Last1]X;L->Last;return true;}int tp0;int find0;int tmp0;for(int i0;i &l…

网络传输大文件使用什么软件可以高速传输?

网络传输大文件使用什么软件可以高速传输&#xff1f;通过网络传输文件总是在速度上得不到很好的体现&#xff0c;更不用说是传输大文件了。本身支持大文件网络传输的工具就是不是很多&#xff0c;很多的传输工具对文件的大小都有所限制&#xff0c;要是想要找到一个高速传输大…

.mmap文件用什么软件可以打开?

1.下载MindManager专属打开它的软件 2。

什么是Saas软件?

人们常常会提及Saas&#xff08;萨斯&#xff09;软件&#xff0c;那么什么是Saas软件呢&#xff1f;首先大家通过百度可以看到百度百科的解释 相信大多数的伙伴们看了之后的感想就是一脸蒙圈&#xff0c;如果让自己给别人介绍什么是Saas软件还是记不住解释不清楚&#xff0c;那…

测试移动信号频率的软件,手机信号工作频段侦测软件

手机信号来源于基站发射的信号。但是常常会遇见的手机信号差&#xff0c;信号弱&#xff0c;上网速度慢等&#xff0c;都有可能是源于信号弱带来的。那么我们看见的手机上显示的信号弱&#xff0c;到底是什么信号弱&#xff1f;如何判别&#xff1f; 这里推荐一款APP软件&#…

杀毒软件可以查杀所有计算机病毒吗,杀毒软件可以查杀所有病毒吗

杀毒软件包括电脑杀毒软件和手机杀毒软件&#xff0c;那么杀毒软件可以查杀所有病毒吗&#xff1f;目前&#xff0c;做到所有病毒查杀还没有一家杀毒软件敢100%保证&#xff0c;因为电脑病毒也在日新月异的发展着&#xff0c;那是不是新病毒就查杀不了呢&#xff1f;也不是&…

可以测试电脑网络速度的软件,介绍4种有用的Internet Speed软件应用程序,用于测试网络速度软件...

当今社会将使用Internet&#xff0c;但是Internet的速度极大地影响了我们的工作和浏览. 在玩游戏和观看视频时测网速什么软件好&#xff0c;拥有一个良好的Internet甚至更为必要. 目前&#xff0c;我们可以使用Internet速度测试软件进行测试. 网络的速度和稳定性使您可以更好地…

什么软件可以测试鬼,PP助手新奇App推荐 《鬼魂探测器》能抓鬼?

最近&#xff0c;小伙伴们迷上了一款奇葩App&#xff0c;据说可以将潜伏在你周围的“阿飘”揪出来。这款软件就是《鬼魂探测器》&#xff0c;听起来是不是有点毛骨悚然&#xff0c;但又忍不住好奇心&#xff0c;通过PP助手下载一探究竟吧。 图1&#xff1a;PP助手(Win)2.0 只要…

测试电脑整机功耗软件,有什么好的测电脑整机功耗的软件吗?

很多人都说电脑的速度越快耗电量就越快&#xff0c;早期的486和现在的P4相比&#xff0c;那简直就是“节能电脑”了&#xff0c;那么想不想知道你的电脑到底有耗电量是多少呢&#xff1f;来试试Overclockulator吧&#xff0c;根据你的选择它可以估算出一台电脑的耗电量。 该软件…

有没有测试颜色的软件,用什么软件测试显示器色彩最准:色彩校正软件

用什么软件测试显示器色彩最准&#xff1a;1.iphone直接显示器校色&#xff0c;这个估计是最有效的方法。有的人可能用不惯iphone的界面&#xff0c;我经常用iphone来测试工程数据&#xff0c;因为iphone有自己的屏幕校色传感器&#xff0c;而iphone的屏幕比一般的显示器都要准…

java用什么软件_Java编程什么软件最好用?

原标题&#xff1a;Java编程什么软件最好用&#xff1f; “工欲善其事必先利其器”&#xff0c;想要学好Java编程开发&#xff0c;除了要有好的学习资源之外&#xff0c;还要有一套适合自己的Java编程软件&#xff0c;好的编程软件能极大提高你的学习和工作效率。那么&#xff…

kml用什么软件打开?

下载安装 bigemap GIS office软件&#xff08;免费就可以) 2、 安装好下载的bigemap软件&#xff0c;直接将kml kmz拖到软件里面就打开了&#xff0c;或者左上角文件打开 选择 kml/kmz 然后选择你的文件 打开记性了。 BIGEMAP支持所有文件格式的打开和保存&#xff0c;如…

可以测试英语发音的软件,检测英语发音的软件

目录 一、音标软件 ①.同求!!!和外国人多说说话。 ②.百度里打“朗酷口语”就可以了~~ 这 个软件可以的!俺也用~~~ 哈哈祝你好运~~。 ③.你好,你说的就跟复读机是一个道理。这种软件不过就是对于人的音频和关键点做了一个发音的匹配度测试,语音库会先前录好没一个单词的发…

测试显卡用什么软件最好,显卡测试用什么软件 怎么测试显卡性能

如果要精确的测试一块显卡的性能则需要一款专业的显卡测试软件,显卡测试用什么软件?像3dmark 11、built-in benchmark tool、gpu-z等软件都是相当优秀的显卡测试软件,另外的测试就是烤机了,可以利用furmark软件烤机测试显卡性能。今天小编就为大家介绍显卡测试的方法。 什么…

有什么软件可以直接拒接所有骚扰电话?3款App让你不再为骚扰电话烦恼

现在大部分智能手机都有自带的拦截功能&#xff0c;可以自动标记可疑的来电号码、对垃圾短信也能起到拦截作用。如果你的手机没有这种功能&#xff0c;也可以下载第三方安全软件进行拦截。 熊猫吃短信app&#xff1a;点击左侧链接下载 熊猫吃短信app是一款值得推荐的垃圾短信过…

什么软件专业测试电脑,测验电脑性能 用什么软件

方法/步骤 1.首先说说电脑的第一个检测&#xff1a;硬件检测&#xff0c;其核心是CPU和GPU(也就是处理器和显卡)。 2.为什么需要这款软件呢&#xff0c;其实在笔记本里这款软件用处不是特别大&#xff0c;因为笔记本配置其实相对很死板(但是硬件详细信息还是有用的&#xff0c;…

有什么软件可以免费下载歌曲?99%不知道这3款软件!

有什么软件可以免费下载歌曲&#xff1f;我们都知道&#xff0c;网络上现在大多数主流音乐软件或手机APP现在都有版权收费限制&#xff0c;在这里推荐几款比较好用的手机端的App和电脑端的一款播放器及下载歌曲的网站。 音乐狂&#xff1a;点击左侧链接下载 音乐狂是一款优秀的…

有什么软件可以提升视频画质,将模糊视频修复清晰?

在素材录制或图像采集过程中&#xff0c;由于各种不可抗拒的因素&#xff0c;画面可能会出现模糊。我们应该如何处理&#xff1f;如何将模糊的视频修复清晰呢&#xff1f; 或许大家在生活中有注意到在各大短视频平台上&#xff0c;哪些经典影视剧修复版的重映屡屡刷屏&#xf…

什么软件可以清除流氓软件

“流氓软件”是介于病毒和正规软件之间的软件。不仅会篡改电脑上的一些信息&#xff0c;还有安装一些捆绑广告插件等等操作&#xff0c;会影响到我们正常的电脑体验。那么该如何清除流氓软件呢&#xff1f;有什么软件可以清除流氓软件&#xff1f;下面小编就教下大家清除流氓软…

除了鲁大师,还有什么软件可以验机?

说到对电脑进行测试的软件&#xff0c;许多用户可能会想起鲁大师&#xff0c;鲁大师作为一款用户常用的电脑检测软件&#xff0c;经常被用作电脑检测的软件。但是鲁大师在使用中会遇到有捆绑广告的问题。因此&#xff0c;在使用中就需要其他软件的协助了&#xff0c;那么下面就…