c++实现线性表中的顺序表(数据结构课程作业)
一、题目简介
实现顺序表的创建、初始化、赋值、插入、删除、按数据查找元素位置、按元素位置查找数据、清空、删除
的操作,以上操作用可用菜单选项完成
二、源程序代码
#include<iostream>
#define MAXSIZE 100
using namespace std;
typedef int ElemType;
typedef struct List
{
ElemType *elem;
int length;
}Sqlist;
void InitList(Sqlist &L);
void DestroyList(Sqlist &L);
void ClearList(Sqlist &L);
void GetLength(Sqlist L);
void isEmpty(Sqlist L);
void Getelem(Sqlist &L,int i);
void Locateelem(Sqlist &L,ElemType e);
void ListInsert(Sqlist &L,int i,ElemType e);
void ListDelete(Sqlist &L,int i);
void fuzhi(Sqlist &L);
void print(Sqlist &L);
void mainscreen();
int main()
{
mainscreen();
return ;
}
void InitList(Sqlist &L)
{
L.elem=new ElemType[MAXSIZE];
if(!L.elem){
cout<<"内存空间分配失败"<<endl;
}
L.length=;
cout<<"顺序表初始化成功"<<endl;
}
void mainscreen()
{
int flag=;
while(flag==)
{
cout<<"请选择对顺序表的操作"<<endl;
cout<<"\t1 初始化顺序表"<<endl;
cout<<"\t2 给顺序表赋值"<<endl;
cout<<"\t3 向顺序表中插入数据元素"<<endl;
cout<<"\t4 向顺序表中删除数据元素"<<endl;
cout<<"\t5 清空顺序表"<<endl;
cout<<"\t6 删除顺序表"<<endl;
cout<<"\t7 根据数据元素查询在顺序表中位置"<<endl;
cout<<"\t8 根据在顺序表中位置查询数据元素"<<endl;
cout<<"\t9 查询顺序表长度"<<endl;
cout<<"\t10 输出顺序表"<<endl;
cout<<"\t11 退出操作"<<endl;
int s;
cin>>s;
if(<=s<=)
{
switch(s)
{
case :
Sqlist L;
InitList(L);
break;
case :
fuzhi(L);
break;
case :
int a;
ElemType e;
cout<<"请输入你要插入的数据元素位置"<<endl;
cin>>a;
cout<<"请输入你要插入的数据元素"<<endl;
cin>>e;
ListInsert(L,a,e);
break;
case :
int b;
cout<<"请输入你要删除的数据元素位置"<<endl;
cin>>b;
ListDelete(L,b);
break;
case :
ClearList(L);
break;
case :
DestroyList(L);
break;
case :
ElemType f;
cout<<"请输入你要查找的数据元素"<<endl;
cin>>f;
Locateelem(L,f);
break;
case :
int c;
cout<<"请输入你要查找的数据元素的位置"<<endl;
cin>>c;
Getelem(L,c);
break;
case :
GetLength(L);
break;
case :
print(L);
break;
case :
flag=;
cout<<"已成功退出对顺序表的操作"<<endl;
exit();
break;
}
}
}
}
void DestroyList(Sqlist &L)
{
if(L.elem)
{
delete[] L.elem;
cout<<"顺序表删除成功"<<endl;
}
else{
cout<<"顺序表删除失败"<<endl;
}
}
void ClearList(Sqlist &L)
{
L.length=;
cout<<"顺序表清空成功"<<endl;
}
void GetLength(Sqlist L)
{
cout<<"顺序表中有"<<L.length<<"个元素"<<endl;
}
void isEmpty(Sqlist L)
{
if(L.length==)
cout<<"顺序表为空"<<endl;
else
cout<<"顺序表不为空"<<endl;
}
void Getelem(Sqlist &L,int i)
{
ElemType e;
if(i<||i>L.length){
cout<<"输入的查找参数错误"<<endl;
}
else{
e=L.elem[i-];
cout<<"查找成功"<<endl;
cout<<"顺序表中第"<<i<<"个数据元素是"<<e<<endl;
}
}
void Locateelem(Sqlist &L,ElemType e)
{
int i=;
int flag=;
for(i=;i<L.length;i++)
{
if(L.elem[i]==e){
cout<<"查找成功"<<endl;
cout<<e<<"位于顺序表中第"<<i+<<"个数据元素"<<endl;
flag=;
}
}
if(flag==)
cout<<"查找失败"<<endl;
}
void ListInsert(Sqlist &L,int i,ElemType e)
{
int j=;
if(i<||i>L.length)
{
cout<<"输入的查找参数错误"<<endl;
}
if(L.length==MAXSIZE)
{
cout<<"当前储存空间已满,无法插入"<<endl;
}
for(j=L.length-;j>=i-;j--)
{
L.elem[j+]=L.elem[j];
}
L.elem[i-]=e;
++L.length;
cout<<"插入顺序表中第"<<i<<"个数据元素成功"<<endl;
}
void ListDelete(Sqlist &L,int i)
{
int j=;
if(i<||i>L.length)
{
cout<<"输入的查找参数错误"<<endl;
}
for(j=i;j<=L.length-;j++)
{
L.elem[j-]=L.elem[j];
}
--L.length;
cout<<"删除顺序表中第"<<i<<"个数据元素成功"<<endl;
}
void fuzhi(Sqlist &L)
{
int n,m;
cout<<"请输入赋值的数据元素个数"<<endl;
cin>>n;
for(int i=;i<n;i++)
{
cout<<"请输入第"<<i+<<"的数据元素的值"<<endl;
cin>>m;
L.elem[i]=m;
L.length++;
}
cout<<"赋值成功"<<endl;
}
void print(Sqlist &L)
{
for(int i=;i<L.length;i++)
{
cout<<"第"<<i+<<"的数据元素的值:";
cout<<L.elem[i]<<endl;
}
cout<<"顺序表输出完成"<<endl;
}
c++实现线性表中的顺序表(数据结构课程作业)的更多相关文章
- PHP数据结构之二 线性表中的顺序表的PHP实现
线性表 (一)基本特点:最基本.最简单.最常用的一种数据结构 在这种结构中: 1.存在一个唯一的被称为“第一个”的数据元素: 2.存在一个唯一的被称为“最后一个”的数据元素: 3.除第一个元素外,每个 ...
- 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题
1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...
- 老郭带你学数据结构(C语言系列)2-线性表之动态顺序表
一.基本概念: 线性表:由n个类型相同的数据元素组成的有限序列,记为(a1,a2,--an). 线性表的特征:其中的元素存在这序偶关系,元素之间存在着严格的次序关系. 顺序存储表:线性表中的元素依次存 ...
- 老郭带你学数据结构(C语言系列)1-线性表之静态顺序表
在学习之前,先说下我的软件情况,操作系统是manjaro linux 今天刚刚升级的,编辑器是vim8.0.55,编译器是gcc 6.2.1,调试器是gdb 7.12,版本再低点也可以,只要gcc版本 ...
- 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 ...
- python中的顺序表
Python中的list和tuple两种类型采用了顺序表的实现技术,tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似. list的基本实现 ...
- K:线性表的实现—顺序表
所谓顺序表,就是顺序存储的线性表.顺序存储就是用一组地址连续的存储单元依次存放线性表中各个数据元素的存储结构. 线性表中所有数据元素的类型是相同的,所以每一个数据元素在存储器中占用相同的大小的空间.假 ...
- 【线性表基础】顺序表和单链表的插入、删除等基本操作【Java版】
本文表述了线性表及其基本操作的代码[Java实现] 参考书籍 :<数据结构 --Java语言描述>/刘小晶 ,杜选主编 线性表需要的基本功能有:动态地增长或收缩:对线性表的任何数据元素进行 ...
- laravel如何A表中包含B表中信息
A表中如何包含B表中的信息 首先看A表的信息 接着看B表的信息 我的需求就是 A表字段name对应B表字段ream_name然后得到B表的对应主键ID要在A表中查询出来 发现问题就是查询出来的id和A ...
随机推荐
- CSS-自适应网页使用@media和rem
@media 查询 @media 媒体查询选择性加载css,意思是自动探测屏幕宽度,然后加载相应的CSS文件.可以针对不同的屏幕尺寸设置不同的样式,特别是需要设置设计响应式的页面,@media 是个不 ...
- 为什么局部内部类和匿名内部类只能访问 final 的局部变量?
首先,我们看一个局部内部类的例子: class OutClass { private int age = 12; public void outPrint(final int x) { class I ...
- Centos7 将应用添加快捷方式到applications 中以pycham为例[ubuntu]适用
安装版本pycharm-2019.1.3 安装路径:/opt/pycharm-2019.1.3/ vim /usr/share/applications/pycharm.desktop #!/usr/ ...
- acm数论之旅(转载) -- 快速幂
0和1都不是素数,也不是合数. a的b次方怎么求 pow(a, b)是数学头文件math.h里面有的函数 可是它返回值是double类型,数据有精度误差 那就自己写for循环咯 LL pow(LL a ...
- Kubernetes的service资源介绍
service 三种工作模式:userspace.iptables.ipvs 删除手动创建的service [root@master ~]# kubectl delete svc redis serv ...
- 解决maven 在intellij IDEA 下载依赖包速度慢的问题
解决maven 在intellij IDEA 下载依赖包速度慢的问题 参考:https://www.jianshu.com/p/63a593700ebc
- 自身经历 .NET转Java 的一些分享
原因 楼主在二线城市从事.NET开发8年,当薪资达到15k想往20k跳的时候,发现一个残酷的现实.在招聘信息上给出这个薪资的一共10家,其中:2~3家给出的是假的薪资范围(吸引面试者),2家是总人数不 ...
- 如何用 pycharm 调试 airflow
airflow 和 pycharm 相关基础知识请看其他博客 我们在使用 airflow的 dag时. 每次写完不知道对不对的,总不能到页面环境中跑一下,等到报错再调试吧.这是很让人恼火的事情 这里我 ...
- vue中加载three.js的gltf模型
vue中加载three.js的gltf模型 一.开始引入three.js相关插件.首先利用淘宝镜像,操作命令为: cnpm install three //npm install three也行 二. ...
- Redis数据的导出和导入(dump和load方式)
迁移redis数据一般有如下3种方式: 第三方工具redis-dump,redis-load aof机制,需要开启aof功能 rdb存储机制 这里介绍第一种方式,通过redis-dump导出数据,再通 ...