一、题目简介

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

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

二、源程序代码

#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++实现线性表中的顺序表(数据结构课程作业)的更多相关文章

  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. 大数据计算引擎之Flink Flink CEP复杂事件编程

    原文地址: 大数据计算引擎之Flink Flink CEP复杂事件编程 复杂事件编程(CEP)是一种基于流处理的技术,将系统数据看作不同类型的事件,通过分析事件之间的关系,建立不同的时事件系序列库,并 ...

  2. 关于OSPF LSA不稳定!

    Issue 1 Solution It is important that you understand the error message during attempts to troublesho ...

  3. 洛谷P1006传纸条

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个 m 行 n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了. ...

  4. leetcode网解题心得——61. 旋转链表

    目录 leetcode网解题心得--61. 旋转链表 1.题目描述 2.算法分析: 3.用自然语言描述该算法 4.java语言实现 5.C语言实现 leetcode网解题心得--61. 旋转链表 1. ...

  5. leetcode 0218

    目录 ✅ 1200. 最小绝对差 描述 解答 cpp py ✅ 897. 递增顺序查找树 描述 解答 cpp 指针问题? fuck ptr py ✅ 183. 从不订购的客户 描述 解答 sql to ...

  6. CF908D 【New Year and Arbitrary Arrangement】

    蒟蒻渣渣禹小心翼翼发布题解.... 这道题,嗯,期望,dp,好,我们有思路了.... however, 主要问题在于字符串无限延伸,so,我们需要考虑记录前缀的关键量来为DP设置终止状态. 我们不妨设 ...

  7. vs下载为0的问题

    问题描述:win10 下无法安装VS2017,visual studio installer下载进度始终为0,点击取消按钮后,也没有反应,visual studio installer也关闭不掉: 具 ...

  8. nginx 变量相关的map模块与split_clients模块及geo模块和geoip模块及keepalive介绍

    map 模块指令默认编译进nginx的 Syntax: map string $variable { ... } # 表示string匹配到{}里的值或变量赋值给$variable Default: ...

  9. 十四 OGNL的概述

    1 什么是OGNL? 对象图导航语言(对象图,以任意一个对象为根,通过OGNL;可以访问与这个对象关联的其他对象).比EL表达式强大很多倍. 可以存取对象的任意属性.调用对象的方法,遍历整个对象的结构 ...

  10. 使用gcc编译c语言解码ascii码

    vi test.c 输入代码: #include<stdio.h> int main(void) { char *p = (char *)"\xE6\x8A\xB1\xE6\xA ...