一、题目简介

实现顺序表的创建、初始化、赋值、插入、删除、按数据查找元素位置、按元素位置查找数据、清空、删除

的操作,以上操作用可用菜单选项完成

二、源程序代码

  1. #include<iostream>
  2. #define MAXSIZE 100
  3. using namespace std;
  4. typedef int ElemType;
  5. typedef struct List
  6. {
  7. ElemType *elem;
  8. int length;
  9. }Sqlist;
  10. void InitList(Sqlist &L);
  11. void DestroyList(Sqlist &L);
  12. void ClearList(Sqlist &L);
  13. void GetLength(Sqlist L);
  14. void isEmpty(Sqlist L);
  15. void Getelem(Sqlist &L,int i);
  16. void Locateelem(Sqlist &L,ElemType e);
  17. void ListInsert(Sqlist &L,int i,ElemType e);
  18. void ListDelete(Sqlist &L,int i);
  19. void fuzhi(Sqlist &L);
  20. void print(Sqlist &L);
  21. void mainscreen();
  22. int main()
  23. {
  24. mainscreen();
  25. return ;
  26. }
  27. void InitList(Sqlist &L)
  28. {
  29. L.elem=new ElemType[MAXSIZE];
  30. if(!L.elem){
  31. cout<<"内存空间分配失败"<<endl;
  32. }
  33. L.length=;
  34. cout<<"顺序表初始化成功"<<endl;
  35. }
  36. void mainscreen()
  37. {
  38. int flag=;
  39. while(flag==)
  40. {
  41. cout<<"请选择对顺序表的操作"<<endl;
  42. cout<<"\t1 初始化顺序表"<<endl;
  43. cout<<"\t2 给顺序表赋值"<<endl;
  44. cout<<"\t3 向顺序表中插入数据元素"<<endl;
  45. cout<<"\t4 向顺序表中删除数据元素"<<endl;
  46. cout<<"\t5 清空顺序表"<<endl;
  47. cout<<"\t6 删除顺序表"<<endl;
  48. cout<<"\t7 根据数据元素查询在顺序表中位置"<<endl;
  49. cout<<"\t8 根据在顺序表中位置查询数据元素"<<endl;
  50. cout<<"\t9 查询顺序表长度"<<endl;
  51. cout<<"\t10 输出顺序表"<<endl;
  52. cout<<"\t11 退出操作"<<endl;
  53. int s;
  54. cin>>s;
  55. if(<=s<=)
  56. {
  57. switch(s)
  58. {
  59. case :
  60. Sqlist L;
  61. InitList(L);
  62. break;
  63. case :
  64. fuzhi(L);
  65. break;
  66. case :
  67. int a;
  68. ElemType e;
  69. cout<<"请输入你要插入的数据元素位置"<<endl;
  70. cin>>a;
  71. cout<<"请输入你要插入的数据元素"<<endl;
  72. cin>>e;
  73. ListInsert(L,a,e);
  74. break;
  75. case :
  76. int b;
  77. cout<<"请输入你要删除的数据元素位置"<<endl;
  78. cin>>b;
  79. ListDelete(L,b);
  80. break;
  81. case :
  82. ClearList(L);
  83. break;
  84. case :
  85. DestroyList(L);
  86. break;
  87. case :
  88. ElemType f;
  89. cout<<"请输入你要查找的数据元素"<<endl;
  90. cin>>f;
  91. Locateelem(L,f);
  92. break;
  93. case :
  94. int c;
  95. cout<<"请输入你要查找的数据元素的位置"<<endl;
  96. cin>>c;
  97. Getelem(L,c);
  98. break;
  99. case :
  100. GetLength(L);
  101. break;
  102. case :
  103. print(L);
  104. break;
  105. case :
  106. flag=;
  107. cout<<"已成功退出对顺序表的操作"<<endl;
  108. exit();
  109. break;
  110. }
  111. }
  112. }
  113. }
  114. void DestroyList(Sqlist &L)
  115. {
  116. if(L.elem)
  117. {
  118. delete[] L.elem;
  119. cout<<"顺序表删除成功"<<endl;
  120. }
  121. else{
  122. cout<<"顺序表删除失败"<<endl;
  123. }
  124. }
  125. void ClearList(Sqlist &L)
  126. {
  127. L.length=;
  128. cout<<"顺序表清空成功"<<endl;
  129. }
  130. void GetLength(Sqlist L)
  131. {
  132. cout<<"顺序表中有"<<L.length<<"个元素"<<endl;
  133. }
  134. void isEmpty(Sqlist L)
  135. {
  136. if(L.length==)
  137. cout<<"顺序表为空"<<endl;
  138. else
  139. cout<<"顺序表不为空"<<endl;
  140. }
  141. void Getelem(Sqlist &L,int i)
  142. {
  143. ElemType e;
  144. if(i<||i>L.length){
  145. cout<<"输入的查找参数错误"<<endl;
  146. }
  147. else{
  148. e=L.elem[i-];
  149. cout<<"查找成功"<<endl;
  150. cout<<"顺序表中第"<<i<<"个数据元素是"<<e<<endl;
  151. }
  152. }
  153. void Locateelem(Sqlist &L,ElemType e)
  154. {
  155. int i=;
  156. int flag=;
  157. for(i=;i<L.length;i++)
  158. {
  159. if(L.elem[i]==e){
  160. cout<<"查找成功"<<endl;
  161. cout<<e<<"位于顺序表中第"<<i+<<"个数据元素"<<endl;
  162. flag=;
  163. }
  164. }
  165. if(flag==)
  166. cout<<"查找失败"<<endl;
  167. }
  168. void ListInsert(Sqlist &L,int i,ElemType e)
  169. {
  170. int j=;
  171. if(i<||i>L.length)
  172. {
  173. cout<<"输入的查找参数错误"<<endl;
  174. }
  175. if(L.length==MAXSIZE)
  176. {
  177. cout<<"当前储存空间已满,无法插入"<<endl;
  178. }
  179. for(j=L.length-;j>=i-;j--)
  180. {
  181. L.elem[j+]=L.elem[j];
  182. }
  183. L.elem[i-]=e;
  184. ++L.length;
  185. cout<<"插入顺序表中第"<<i<<"个数据元素成功"<<endl;
  186. }
  187. void ListDelete(Sqlist &L,int i)
  188. {
  189. int j=;
  190. if(i<||i>L.length)
  191. {
  192. cout<<"输入的查找参数错误"<<endl;
  193. }
  194. for(j=i;j<=L.length-;j++)
  195. {
  196. L.elem[j-]=L.elem[j];
  197. }
  198. --L.length;
  199. cout<<"删除顺序表中第"<<i<<"个数据元素成功"<<endl;
  200. }
  201. void fuzhi(Sqlist &L)
  202. {
  203. int n,m;
  204. cout<<"请输入赋值的数据元素个数"<<endl;
  205. cin>>n;
  206. for(int i=;i<n;i++)
  207. {
  208. cout<<"请输入第"<<i+<<"的数据元素的值"<<endl;
  209. cin>>m;
  210. L.elem[i]=m;
  211. L.length++;
  212. }
  213. cout<<"赋值成功"<<endl;
  214. }
  215. void print(Sqlist &L)
  216. {
  217. for(int i=;i<L.length;i++)
  218. {
  219. cout<<"第"<<i+<<"的数据元素的值:";
  220. cout<<L.elem[i]<<endl;
  221. }
  222. cout<<"顺序表输出完成"<<endl;
  223. }

c++实现线性表中的顺序表(数据结构课程作业)的更多相关文章

  1. PHP数据结构之二 线性表中的顺序表的PHP实现

    线性表 (一)基本特点:最基本.最简单.最常用的一种数据结构 在这种结构中: 1.存在一个唯一的被称为“第一个”的数据元素: 2.存在一个唯一的被称为“最后一个”的数据元素: 3.除第一个元素外,每个 ...

  2. 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题

    1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...

  3. 老郭带你学数据结构(C语言系列)2-线性表之动态顺序表

    一.基本概念: 线性表:由n个类型相同的数据元素组成的有限序列,记为(a1,a2,--an). 线性表的特征:其中的元素存在这序偶关系,元素之间存在着严格的次序关系. 顺序存储表:线性表中的元素依次存 ...

  4. 老郭带你学数据结构(C语言系列)1-线性表之静态顺序表

    在学习之前,先说下我的软件情况,操作系统是manjaro linux 今天刚刚升级的,编辑器是vim8.0.55,编译器是gcc 6.2.1,调试器是gdb 7.12,版本再低点也可以,只要gcc版本 ...

  5. B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序

    B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序 select a.*,count(*) as c from a left join b on a.id=b.ai ...

  6. python中的顺序表

    Python中的list和tuple两种类型采用了顺序表的实现技术,tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似. list的基本实现 ...

  7. K:线性表的实现—顺序表

    所谓顺序表,就是顺序存储的线性表.顺序存储就是用一组地址连续的存储单元依次存放线性表中各个数据元素的存储结构. 线性表中所有数据元素的类型是相同的,所以每一个数据元素在存储器中占用相同的大小的空间.假 ...

  8. 【线性表基础】顺序表和单链表的插入、删除等基本操作【Java版】

    本文表述了线性表及其基本操作的代码[Java实现] 参考书籍 :<数据结构 --Java语言描述>/刘小晶 ,杜选主编 线性表需要的基本功能有:动态地增长或收缩:对线性表的任何数据元素进行 ...

  9. laravel如何A表中包含B表中信息

    A表中如何包含B表中的信息 首先看A表的信息 接着看B表的信息 我的需求就是 A表字段name对应B表字段ream_name然后得到B表的对应主键ID要在A表中查询出来 发现问题就是查询出来的id和A ...

随机推荐

  1. 计算机二级-C语言-程序填空题-190115记录-fprintf()函数和fscanf()函数的使用。

    //给定程序,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myflie3.txt的文本文件中,然后再顺序读出显示在屏幕上. //重难点:fprintf()函数和fscanf()函数的使 ...

  2. 干货 | C#开发的电影售票系统

    01 介绍 一个有会员制的电影院购票系统.具有会员注册功能,可区分会员和散客两种身份,实现会员及折扣管理.购票具有挑选电影场次,选择座位和查看电影信息等功能. 查看电影详情.获取排片信息. 选择场次座 ...

  3. ICCV2019 oral:Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution

    引言 基于低分辨率的图像恢复高分辨图像具有重要意义,近年来,利用深度学习做单张图像超分辨主要有两个大方向:1.减小失真度(distortion, 意味着高PSNR)的图像超分辨,这类方法主要最小化均方 ...

  4. 【代码总结】PHP面向对象之接口与多态性应用

    概述: PHP之支持单继承,也就是说每个类智能继承一个父类.当声明的新类继承抽象类实现模板以后就不能再有其他问题,为了解决这个问题,PHP引用了接口 ------------------------- ...

  5. MySQL数据库--基础简述

    MySQL数据库--基础简述 1.15.1 MySQL简介 Mysql是最流行的RDBMS(Relational Database Management System:关系数据库管理系统),特别是在W ...

  6. 原生js的表单验证

    最近在学原生的js,把一些练手的代码往博客放一放,权当积累经验,若有错漏,或是觉得浅显,大家不要见怪. 这是一个原生js编写的简单的表单验证: <!DOCTYPE html><htm ...

  7. 【原】mac电脑使用总结

    mac下终端配置(item2+oh-my-zsh)+solarized配色方案:https://www.cnblogs.com/weixuqin/p/7029177.html

  8. nyoj 57

    6174问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替 ...

  9. redhat7.6 httpd配置php模块

    1.安装php yum install "*php*"   -y 2.编辑httpd.conf配置文件 找到LoadModule foo_module modules/mod_fo ...

  10. Python3.5学习之旅——day4

    本节内容 1.装饰器 2.迭代器与生成器 3.内置方法 4.软件目录结构规范 一.装饰器 装饰器是一个用来装饰其他函数的工具,即为其他函数添加附加功能,其本质就是函数. 装饰器需要遵循的以下两个原则: ...