线性表的顺序存储结构与操作 题目编号:454

news2025/2/23 9:42:37

题目描述

请你定义一个顺序表,可以对顺序表进行如下操作:

在某个元素之前插入一些元素
删除某个位置的元素
查找某元素
获取某个位置的元素
遍历输出所有元素
键盘输入一些命令,可以执行上述操作。本题中,顺序表元素为整数,顺序表的第一个元素位置为1,顺序表的最大长度为20。

输入描述

各个命令以及相关数据的输入格式如下:

在某个位置之前插入操作的命令:I,接下来的一行是插入的元素个数n,
下面是n行数据,每行数据有两个值,分别代表插入位置与插入的元素值

查找某个元素:S x,x是要查找的元素值

获取某个位置的元素:G i,i是需要获取的元素位置

删除某个位置的元素:D i,i是被删除的元素位置

遍历输出所有元素:V

当输入的命令为E时,程序结束
输出描述
当输入的命令为S时,请输出要查找元素的位置,如果没找到,请输出None

当输入的命令为G时,请输出获取的元素值,如果输入的元素位置不正确,
输出“位置不正确”

当输入的命令是D时,请输出被删除的那个元素值,如果表空,输出“下溢”,
如果输入的位置不正确,输出“位置不正确”

当输入命令是I时,如果表满,输出“上溢”,如果输入的位置不正确,
输出“位置不正确”
注意,所有的元素均占一行

输入样例

I
2
1 1
2 2
S 2
D 1
I
2
1 3
2 4
G 2
V
E

输出样例

2
1
4
3
4
2

代码

#include<iostream>
using namespace std;
class List{
    public:
        List();
        ~List(){}
        void Insert(int i,int x);
        void Get(int i);
        void Find(int x);
        void Delete(int i);
        void PrintList();
    private:
        int data[20]; 
        int len;
}; 
List::List(){
    len = 0; 
} 
void List::Insert(int i, int x){
    if(len >= 20){
        cout << "上溢" ;
    }
    if(i < 1 || i > len+1){
        cout << "位置不正确" ;
    }
    for(int j = len; j >= i; j--){
        data[j] = data[j-1];
    }
    data[i-1] = x;
    len++;
}
void List::Get(int i){
    if(i < 1 && i > len){
        cout << "位置不正确" ; 
    }
    else{
        cout << data[i-1] ;
    }
}
void List::Find(int x){
    int count = 0;
    for(int i = 0; i < len; i++){
        if(data[i] == x){
            cout << i+1 ;
            count = 1;
        }
    }
    if(count == 0){
        cout << "None" ;
    }
}
void List::Delete(int i){
    int x;
    int j;
    if(len == 0){
        cout << "下溢" ; 
    }
    if(i < 1 || i > len){
        cout << "位置不正确" ; 
    }
    else{
        x = data[i-1];
        for(j = i; j < len; j++){
            data[j-1] = data[j];
        }
        len--;
        cout << x ;
    }
}  
void List::PrintList(){
    for(int i = 0; i < len; i++){
        cout << data[i] ;
    }
}
int main()
{
    int i;
    int x;
    int m;
    char n;
    List q;
    while(1){
        cin >> n;
        if(n == 'I'){
            cin >> m;
            for(int j = 0; j < m; j++){
                cin >> i;
                cin >> x;
                q.Insert(i,x); 
            }
        }
        else if(n == 'S'){
            cin >> x;
            q.Find(x);
        }
        else if(n == 'G'){
            cin >> i;
            q.Get(i);
        }
        else if(n == 'D'){
            cin >> i;
            q.Delete(i);
        }
        else if(n == 'V'){
            q.PrintList();
        }
        else if(n == 'E'){
            return 0;
        }
        else{
            break;
        }
    }
    return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/469524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【BIM+GIS】Supernap加载实景三维倾斜摄影模型

OSGB是常见的倾斜模型格式,本文讲述如何在Supernap中加载实景三维倾斜摄影模型OSGB。 文章目录 一、生成配置文件二、加载倾斜模型1. 新建场景2. 添加模型3. 高程调整一、生成配置文件 点击【三维数据】→【数据管理】→【生成配置文件】。 参数设置如下: 源路径:选择倾斜模…

荔枝派Zero(全志V3S)开启mplayer,播放音视频

文章目录 前言一、buildroot 配置及编译1、开启 ALSA 和 MPLAY2、编译 二、拷贝到到 SD 卡1、将 rootfs.tar 解压缩到 SD 卡 rootfs 分区②、将 mp4 文件和 mp3 文件拷贝到 SD 卡 rootfs 分区 三、测试1、mplayer 使用2、mplayer 播放音频3、mplayer 播放视频 前言 mplayer 是…

华为在软件工具生态埋下多颗“种子”,静候国产软件产业萌芽

文丨智能相对论 作者丨沈浪 当代的数字经济大厦由各种各样的软件一块一块地搭建起来。然而&#xff0c;站在国内软件行业的中心&#xff0c;热闹的大多是来自上层的软件应用&#xff0c;而沉寂的却总是底层又难又基础的领域&#xff0c;比如软件开发。 软件开发&#xff0c;…

初始新能源汽车

文章目录 电动汽车的三级模块体系VCU&#xff08;整车控制器&#xff09;MCU&#xff08;电机控制器&#xff09;电池包和BMS&#xff08;电池管理系统&#xff09;电动汽车的大三电电动汽车的小三电电动汽车的模块组成 电动汽车的三级模块体系 总体上讲&#xff0c;整个新能源…

牛客刷题篇:客似云来 和 剪花布条(Java)

目录 题目一&#xff1a;客似云来 输入描述 输出描述 解题思路 代码 题目二&#xff1a;剪花布条 输入描述 输出描述 解题思路 代码 题目一&#xff1a;客似云来 链接&#xff1a;客似云来 NowCoder开了一家早餐店&#xff0c;这家店的客人都有个奇怪的癖好&#xff…

算法刷题|1143.最长公共子序列、1035.不相交的线、53.最大子数组和

最长公共子序列 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&a…

跨子网通信【路由通信。配置路由】

路由通信条件是&#xff1a;服务器多网卡 or 单网卡多IP 查看路由表 route -n设置一网卡多IP 进行网络配置 进入setup中&#xff0c;选择网络配置 setup选择设备配置 去除DHCP动态协议 进来后&#xff0c;可能会发现无法对静态IP和子网掩码进行编辑&#xff0c;是因为你开启…

Qt - 从零到壹的 打地鼠 游戏

❤️‍&#x1f525;欢迎收看西北风的blog&#xff0c;好男人就是我&#xff0c;我就是西北风。✨ 目录 &#x1f7e5;一&#xff1a;创建一个主窗体 &#x1f7e3;二.&#xff1a;添加主窗口背景图片以及相关部件 &#x1f538;2.1 添加资源文件 2.1.1 添加资源文件 2.1…

NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_实际操作01---大数据之Nifi工作笔记0040

我们基于之前做的从mysql中获取数据,然后同步数据到mysql中,基于这个案例来做,可以看到上面是,这个案例的所有处理器,我们基于这个来改造. 1.首先我这里重新安装了一个mysql8.0.33 ,安装的是windows版本的,如果你是linux版本的,这里也说一下,如何开启binlog功能,首先要开启bin…

模拟和数字电路 —— 导学篇

前言&#xff1a;本科零基础跨考模电&#xff0c;时间不是很充裕&#xff0c;选择不补学电路分析的基础&#xff0c;直接开始学习模电。如果遇到不会的问题只学习指定的那块。 学习模电需要哪些基本电路知识 比如学习基本放大电路时经常用到的KVL、KCL&#xff1b;学习频率响应…

用C++实现Date类

Date类 判断 大于 小于 等于 等等运算符重载函数 我们先实现一个 > 的运算符重载&#xff0c;然后再实现一个 的运算符重载&#xff1a; bool Date::operator>(const Date& d) {if (_year > d._year){return true;}else if (_year d._year && _mo…

教你如何通过内网穿透轻松实现PL/SQL远程连接Oracle数据库【内网穿透】

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 转发自CSDN远程穿透的文章&#xff1a;公网远程连…

【PLC】贝加莱PLC理论及操作年度培训

最近在进行PLC培训&#xff0c;主要是贝加莱PLC产品的学习&#xff0c;学习了上下位机的一些基本操作&#xff0c;能够进行一些简单的实践&#xff0c;最后顺利通过年度考核。 0 引言 PLC&#xff1a;可编程逻辑控制器&#xff0c;由CPU、存储器、输入输出接口、电影以及外部设…

【unity专题篇】—GUI(IMGUI)思维导图详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

企业关键数据资产如何保护?腾讯安全联合“数据安全推进计划”落地主题沙龙

4月26日&#xff0c;腾讯安全联合中国信通院“数据安全推进计划”共同在深圳举办了数据安全研讨会&#xff0c;共同探讨新形势下如何让企业关键数据资产更安全。中国信息通信研究院云计算与大数据研究所高级业务主管龚诗然、腾讯云安全总经理李滨、炼石网络创始人兼CEO白小勇、…

【Vue3学习笔记1】一个清单应用帮你入门Vue.js

Vue 目前已经是国内最流⾏的前端框架之⼀&#xff0c;Vue 3 带来的诸多优化更是让前端圈迎来了新的潮流&#xff0c;比如&#xff1a; 基于 Proxy 的全新响应式实现&#xff1b; Composition API <script setup> 组织代码的更优方式&#xff1b; 更有料的 TypeScript 支…

关于C++的线程操作 | 双检锁与智能指针接口使用

文章目录 thread对象的构造this_threadconstructmutexref 用lambda表达式构造thread线程串行比并行快&#xff1f;CAS&#xff08;atomic类&#xff09;timed_mutexlock_guard,unique_guard&#xff0c;手动控制生命周期,为什么要使用条件变量不用条件变量带来的问题&#xff1…

【python基础语法三】列表,元组,集合,字典相关操作

列表的相关操作 1. 列表的拼接 (同元组) lst1 ["hello","world"] lst2 ["hello","python"] res lst1 lst2 print(res) # ["hello","world","hello","python"]2. 列表的重复 (同元组) …

二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)

文章目录 二、搭建MyBatis采用xml方式&#xff0c;验证CRUD&#xff08;增删改查操作&#xff09;2.1 开发环境2.2 创建maven工程2.3 创建User实体2.4 创建MyBatis的核心配置文件2.5 创建mapper接口2.6 创建MyBatis的映射文件2.7 通过junit测试功能 二、搭建MyBatis采用xml方式…

三、MyBatis核心配置文件详解

文章目录 三、MyBatis核心配置文件详解 三、MyBatis核心配置文件详解 application.properties server.port8018 jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://192.168.31.20:3306/litemall jdbc.usernameroot jdbc.password123456详情请看mybatis-config.xml配置…