【数据结构】实验项目:顺序表,也就那么回事

article/2025/10/4 18:34:29

目录

嗨,这里是狐狸~~

简介

顺序表的结构定义:

声明顺序表类型变量:

实验内容:

实验说明 :

实验思路

1、 输入一组整型元素序列(不少于10个),建立顺序表。 

2.  在该顺序表中进行顺序查找某一元素,查找成功返回 1,否则返回 0。 

3.判断该顺序表中元素是否对称,对称返回 1,否则返回 0。

    symmetry.h  

4.  实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 

5.  输入整型元素序列(不少于10个),利用有序表插入算法建立一个有序表。

6.  利用算法5建立两个非递减有序表,并把它们合并成一个非递减有序表。       

7.  在主函数中设计一个简单菜单,调用上述算法。

代码结构:

运行截图:

总结


啤酒几杯,废话两行,如果你认真听及,每个字眼都是我想你。

嗨,这里是狐狸~~

今天是周末,加班了,又见面了,现在是2021年12月11日的晚上21点21分,我正在屏幕前打出这行字,距离2022年还有20天,20天之后2021就永远离我们而去了,怎么突然网抑云了,回到正题,现在来给大家分享一个数据结构的实验项目,这个也是数据结构里一个非常经典的知识了,希望大家可以耐心享用。

简介

顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序储存结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。 

顺序表的结构定义:

#define maxlen 50 //定义顺序表中元素个数最多有几个typedef struct{elementtype data[maxlen]; //elementtype是元素的类型 依具体情况而定int listlen; //便于时刻了解顺序表里元素的个数}seqlist; //顺序表的名称 不妨为seqlist

声明顺序表类型变量:

seqlist L,L1;

如顺序表的每个结点占用len个内存单元,用location (ki)表示顺序表中第i个结点ki所占内存空间的第1个单元的地址。则有如下的关系:location (ki+1) = location (ki) +len

location (ki) = location(k1) + (i-1)len

存储结构要体现数据的逻辑结构,顺序表的存储结构中,内存中物理地址相邻的结点一定具有顺序表中的逻辑关系。

实验内容:

1.输入一组整型元素序列(不少于10个),建立顺序表。
2.在该顺序表中进行顺序查找某一元素,查找成功返回 1,否则返回 0。
3.判断该顺序表中元素是否对称,对称返回 1,否则返回 0。
4.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。
5.输入整型元素序列(不少于10个),利用有序表插入算法建立一个有序表。
6.利用算法5建立两个非递减有序表,并把它们合并成一个非递减有序表。
7.在主函数中设计一个简单菜单,调用上述算法。

实验说明 :

  1. 算法 1至算法6的有关函数用头文件方式存储,主函数包含该头文件。
  2. 存储定义
   const  int  MAXSIZE=15 ;   // 表中元素的最大个数 typedef  int  ElemType;   // 元素类型 typedef  struct  list  { ElemType  elem[MAXSIZE];  // 静态分配 int  length;    // 表的实际长度 } SqList ;        // 顺序表的类型名 

实验思路

1、 输入一组整型元素序列(不少于10个),建立顺序表。 

         create_arr.h

#include"head.h"
void create_arr(ElemType elem[], int n)
{
cout << "请输入" << n << "个整数:" << endl;
for (int i = 0; i < n; i++)
cin >> elem[i];
cout << "建立的顺序表为:[";
for (int i = 0; i < n; i++)
cout <<elem[i] << ",";
cout << "]";
cout << endl;
}

2.  在该顺序表中进行顺序查找某一元素,查找成功返回 1,否则返回 0。 

         searvh_elem.h

#include"head.h" 
int search_elem(ElemType elem[], int n, int m)
{for (int i = 0; i < n; i++)if (elem[i] == m)return 1;else (elem[i] != m);return 0;
}

3.判断该顺序表中元素是否对称,对称返回 1,否则返回 0。

    symmetry.h  

#include"head.h"
int symmetry_arr(ElemType elem[], int n)
{int midl, midr, mid, r = 0, m = 0;if (n % 2 == 0 && n != 0){midl = elem[n / 2 - 1];midr = elem[n / 2];for (int j = n / 2 - 2; j >= 0; j--)if (elem[n / 2 - 1] < elem[j])m++;for (int k = n / 2 + 1; k < n; k++)if (elem[n / 2] < elem[k])r++;if (m + r != 0)return 0;elsereturn 1;}else{mid = elem[n / 2];for (int i = n / 2 - 1; i >= 0; i--)if (elem[n / 2] < elem[i])m++;for (int j = n / 2 + 1; j < n; j++)if (elem[n / 2] < elem[j])r++;if (m + r != 0)return 0;elsereturn 1;}}

4.  实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 

          jiou_sort.h

#include"head.h"
void jiou_sort(ElemType elem[], int n)
{   int *p, k = 0;p = new int[n];for (int i = 0; i < n; i++){if (elem[i] % 2 != 0){p[k] = elem[i];k++;}}for (int i = 0; i < n; i++){if(elem[i] % 2 == 0){p[k] = elem[i];k++;}}for (int i = 0; i < n; i++)cout << p[i] << ",";cout<<endl ;
}

5.  输入整型元素序列(不少于10个),利用有序表插入算法建立一个有序表。

          built_sortarr.h

#include<algorithm>
#include"head.h"
void built_sortarr(ElemType elem[], int n)
{cout << "请输入" << n << "个整数:" << endl;for (int i = 0; i < n; i++)cin >> elem[i];sort(elem, elem + n);for (int i = 0; i < n; i++)cout<< elem[i];
}

6.  利用算法5建立两个非递减有序表,并把它们合并成一个非递减有序表。       

        combine_sortarr.h 

#include"head.h"
void combine_sortarr(ElemType elem1[], ElemType elem2[], int n)
{int *p, c,q = 0, m = 0;p = new int[n];while (elem1[q] >= 0){p[q] = elem1[q];q++;}c = q;for (int i = 0; i < n - c; i++){for (int j = 0; j < q; j++){if (elem2[i] <= p[j]){for (int k = q; k >= j; k--)p[k] = p[k - 1];p[j] = elem2[i];break;}else if (m = q)p[q] = elem2[i];m++;}q++;}for (int i = 0; i < n; i++){cout << p[i] << ",";}
}

7.  在主函数中设计一个简单菜单,调用上述算法。

#include"create_arr.h"
#include"search_elem.h"
#include"symmetry_arr.h"
#include"jiou_sort.h"
#include"built_sortarr.h"
#include"combine_sortarr.h"
#include"list.h"
int main() 
{struct list SqList;ElemType elem[MAXSIZE],  elem1[MAXSIZE];cout << "1. 输入一组整型元素序列,建立顺序表。" << endl;cout << "2.在该顺序表中进行顺序查找某一元素,查找成功返回 1,否则返回 0。" << endl;cout << "3.判断该顺序表中元素是否对称,对称返回 1,否则返回 0。" << endl;cout << "4.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。" << endl;cout << "5.输入整型元素序列,利用有序表插入算法建立一个有序表。" << endl;cout << "6.利用算法5建立两个非递减有序表,并把它们合并成一个非递减有序表。" << endl;cout << endl;int num;while (true) {   cout << "请输入一个数字:";cin >> num;switch (num){case 1:{cout << "请输入数据个数:";cin >> SqList.length;create_arr(elem, SqList.length);cout << endl;}break;case 2:{int x;cout << "请输入你要查找的数:";cin >> x;if (search_elem(elem, SqList.length, x) == 1)cout << "所查元素在顺序表中" << endl;else cout << "所查元素不在顺序表中" << endl;cout << endl;}break;case 3:{if (symmetry_arr(elem, SqList.length) == 1)cout << "顺序表对称" << endl;else cout << "顺序表不对称" << endl;cout << endl;}break;case 4:{jiou_sort(elem, SqList.length);cout << endl;}break;case 5:{built_sortarr(elem1, SqList.length);cout << endl;}break;case 6:{combine_sortarr(elem, elem1, 2 * SqList.length);cout << endl;}break;default:cout << "输入错误,请重新输入:" << endl;}}return 0;
}

 

代码结构:

运行截图:

总结

OK,简单总结一下,这个顺序表项目就算完成了,总体来说还算简单,思路理清不算太难,数据结构确实需要很强的逻辑思维能力,这就需要大家在平常多多锻炼了,哈哈哈,今天就到这里啦,在这里希望可以得到大家的关注以及点赞啦,希望大家可以多多支持!!你们的点赞就是我坚持下去的动力!

后续我还会发布更多的项目源或者学习资料,希望大家可以持续关注,有什么问题可以回帖留言。想要提前掌握的可以加群领取C/C++学习资料以及其他项目的源码的可以加群【1083227756】了解。想要对程序员的未来发展有兴趣的可以关注微信公众号:【狐狸的编码时光】,希望和大家一起学习进步


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

相关文章

数据结构(实验一)

第一次写报告&#xff0c;虽然有点简单&#xff0c;但还是要勉励自己再接再厉。加油 继续努力。 1.实验目的&#xff08;结出本次实验所涉及并要求掌握的知识点&#xff09; 1.掌握顺序表的存储结构形式及描述方法和基本运算的实现&#xff1b; 2.掌握用顺序表设计合理的数据…

数据结构实验

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;下面小编就教下大家清除流氓软…