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 ...
随机推荐
- Django中的path函数
path( )作用:解析URL地址 path( ) 标准语法: (<>为必须的参数,[]为可选参数) path(<route>, <view>, [name=Non ...
- 操作系统OS - 进程的状态切换
- acm数论之旅(转载)--素数
https://www.cnblogs.com/linyujun/p/5198832.html 前言:好多学ACM的人都在问我数论的知识(其实我本人分不清数学和数论有什么区别,反正以后有关数学的知识我 ...
- 【原】rsync使用
在使用jenkins当跳板机的场景下,有使用git pull 代码到jenkins机器后,需要将代码复制到另一台机器上,常用的复制命令有scp和rsync:现就使用到了rsync进行详解: rsync ...
- Java IO流详解(四)——字符流Reader和Writer
前面一章介绍了字节流的使用,提到了字节流在处理utf-8编码的中文可能会出现乱码的情况(其他编码的中文同样会出现乱码),所以Java针对这一情况提供了字符流. 但是字符流只能处理字符,不能用来处理 . ...
- 【Hibernate 多对多】
HibernateManytoMany public class HibernateManytoMany { //演示维护第三张表 @Test public void testTable2() { S ...
- Mac 系统添加右键功能菜单--新建 office,文档等
Mac 系统自带右键功能键比较少,可以添加服务来拓展功能项.例如 Windows 系统右键可以新建 Word 文档,Excel 工作表等,Mac 默认没有,需要进行设置添加. 首先 F4 键进入 La ...
- locust --hellp
1. Locust简介 Locust是使用Python语言编写实现的开源性能测试工具,简洁.轻量.高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力. 官网:https://loc ...
- Linux Mysql基础操作
1). 打开MySQL 使用如下两条命令,打开MySQL服务并使用root用户登录: # 启动 MySQL 服务 sudo service mysql start # 使用 root 用户登录,实验楼 ...
- Centos610无桌面安装Docker-内核升级
1.查看当前操作系统和系统内核 (此处只需要注意一项centos6的docker源只有64位的,x86_64,32位的直接换系统吧) 查看当前内核版本uname -r 2.6.32-754.el6.x ...