A : DS顺序表--类实现

news2025/1/7 7:01:25

Description

实现顺序表的用C++语言和类实现顺序表

属性包括:数组、实际长度、最大长度(设定为1000)

操作包括:创建、插入、删除、查找

类定义参考

#include<iostream>
using namespace std;
#define ok 0
#define error -1

// 顺序表类定义
class SeqList
{
private:
    int *list;      // 元素数组
    int maxsize;    // 顺序表最大长度
    int size;       // 顺序表实际长度
public:
    SeqList();                          // 构造函数
    ~SeqList();                         // 析构函数
    int list_size();                    // 获取顺序表实际长度
    int list_insert(int i, int item);   // 插入一个元素,参数是插入的数值和位置
    int list_del(int i);                // 删除一个元素,参数是删除的位置
    int list_get(int i);                // 获取一个元素,参数是获取的位置
    void list_display();                // 输出整个顺序表
};

SeqList::SeqList()
{
    maxsize = 1000;
    size = 0;
    list = new int[maxsize];
}
SeqList::~SeqList()
{
    delete []list;
}

Input

  • 第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据
  • 第2行输入要插入的位置和新数据
  • 第3行输入要插入的位置和新数据
  • 第4行输入要删除的位置
  • 第5行输入要删除的位置
  • 第6行输入要查找的位置
  • 第7行输入要查找的位置

Output

数据之间用空格隔开

第1行输出创建后的顺序表内容,包括顺序表实际长度和数据

每成功执行一次操作(插入或删除),输出执行后的顺序表内容

每成功执行一次查找,输出查找到的数据

如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出顺序表内容

Sample

#0
Input

Copy

6 11 22 33 44 55 66
3 777
1 888
1
9
0
5
Output

Copy

6 11 22 33 44 55 66 
7 11 22 777 33 44 55 66 
8 888 11 22 777 33 44 55 66 
7 11 22 777 33 44 55 66 
error
error
44


 


#include<iostream>
using namespace std;
#define ok 0
#define error -1

// 顺序表类定义
class SeqList
{
private:
    int* list;      // 元素数组
    int maxsize;    // 顺序表最大长度
    int size;       // 顺序表实际长度
public:
    SeqList();                          // 构造函数
    ~SeqList();                         // 析构函数
    int list_size();                    // 获取顺序表实际长度
    bool list_insert(int i, int item);   // 插入一个元素,参数是插入的位置  数值
    bool list_del(int i);                // 删除一个元素,参数是删除的位置
    bool list_get(int i);                // 获取一个元素,参数是获取的位置
    void list_display();                // 输出整个顺序表

   
};

SeqList::SeqList()// 构造函数
{
    maxsize = 1000;
    size = 0;
    list = new int[maxsize];
}

SeqList::~SeqList() // 析构函数
{
    delete[]list;
}

// // 获取顺序表实际长度
int SeqList:: list_size() {
    return size;
}


// 插入一个元素,参数是插入的位置 数值
bool SeqList:: list_insert(int i, int item) {
    //判断是不是合法位置i
    if (i<1 || i>size + 1)
    {
        return false;
    }
    int j = size;//list数组从0开始 所以list[size]这个位置是为空的
    for (j = size; j > i - 1; j--)
    {
        list[j] = list[j - 1];//插入就是把数组长度加一位 并且每个单位往后移一位
    }
    list[j] = item;//此时的j对于i-1 也就是在i的位置输入item数据
    size++;//数组总长要+1
    return true;
}

 // 删除一个元素,参数是删除的位置
bool  SeqList:: list_del(int i) {
    //判断是不是合法位置i
    if (i<1 || i>size + 1)
    {
        return false;
    }
    int j;
    for (j = i - 1; j < size - 1; j++)
    {  //j = i - 1 此时j的位置就是i
        list[j] = list[j + 1]; //删除就是后面的数据 把 前面一项的数据覆盖
    }
    size--;//删除 数组长度-1
    return true;
}

// 获取一个元素,参数是获取的位置
bool SeqList::list_get(int i)
{
    if(i<1 || i>size)	
				return false;
			cout<<list[i-1]<<endl;
			return true;
}

//输出列表
void SeqList:: list_display() {
    cout << size << " ";
    for (int i = 0; i < size; i++)
        cout << list[i] << " ";
    cout << endl;
}



int main()
{
    //第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据
    int n;
    cin >> n;
    //创建顺序表
    SeqList myList;
    //接着输入n个数据
    for (int i = 1; i <= n; i++)
    {
        int num1;
        cin >> num1;
        myList.list_insert(i, num1); 插入一个元素,参数是插入的位置+数值
    }
    // 输出整个顺序表
    myList.list_display();

    //第2行输入要插入的位置和新数据
    int num;
    cin >> n >> num;
    //判断是否输出
    if (!myList.list_insert(n, num))
    {
        cout << "error" << endl;
    }
    else {
        myList.list_display();
    }
    //第3行输入要插入的位置和新数据
    cin >> n >> num;
    //判断是否输出
    if (!myList.list_insert(n, num))
    {
        cout << "error" << endl;
    }
    else {
        myList.list_display();
    }

    //第4行输入要删除的位置
    cin >> n;
    //判断是否输出
    if (!myList.list_del(n))
    {
        cout << "error" << endl;
    }
    else {
        myList.list_display();
    }
    //第5行输入要删除的位置
    cin >> n;
    //判断是否输出
    if (!myList.list_del(n))
    {
        cout << "error" << endl;
    }
    else {
        myList.list_display();
    }

   // 第6行输入要查找的位置
    cin >> n;
    //判断是否输出
    if (!myList.list_get(n))
    {
        cout << "error" << endl;
    }
  
     //   第7行输入要查找的位置
    cin >> n;
    //判断是否输出
    if (!myList.list_get(n))
    {
        cout << "error" << endl;
    }
   
}

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

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

相关文章

Unity实现角色受到攻击后屏幕抖动的效果

文章目录 实现效果摄像机抖动脚本 玩家受伤其他文章 实现效果 首先看一下实现效果。 摄像机 我们要使用屏幕抖动&#xff0c;使用的是CinemachineVirtualCamera这个组件&#xff0c;这个组件需要在包管理器中进行导入。 导入这个组件之后&#xff0c;创建一个Chinemachine-…

学习记忆——宫殿篇——记忆宫殿——记忆桩——单间+客厅+厨房+厕所+书房+院子

文章目录 单间客厅厨房厕所书房院子 单间 水壶 水龙头 香皂 果汁机 电视 门空间 花 红酒 葡萄 不锈钢 白毛沙发 彩色垫子 吉他 皮椅 挂画 风扇 糖抱枕 盒子 花土 水晶腿 衣柜 笔 三环相框 水壶 壁挂 台灯 被 网球拍 足球 抽屉 闹钟 蝴蝶 心 斑马 三轮车 音响 椅子 碗 玩偶 烟灰…

Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化)

Android 12 源码分析 —— 应用层 六&#xff08;StatusBar的UI创建和初始化) 在前面的文章中,我们分别介绍了Layout整体布局,以及StatusBar类的初始化.前者介绍了整体上面的布局,后者介绍了三大窗口的创建的入口处,以及需要做的准备工作.现在我们分别来细化三大窗口的UI创建和…

苹果手机怎么录屏?1分钟轻松搞定

虽然一直使用苹果手机&#xff0c;但是对它的录屏功能还不是很会使用。苹果手机怎么录屏&#xff1f;录屏可以录制声音吗&#xff1f;麻烦大家教教我&#xff01; 苹果手机为用户提供了十分便捷的内置录屏功能&#xff0c;可以让您随时随地录制手机上的内容。但是很多小伙伴在第…

六角形锌饼的尺寸及其允许偏差

声明 本文是学习GB-T 3610-2010 电池锌饼. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了电池锌饼的产品分类、要求、试验方法、检验规则及标志、包装、运输、贮存、质量证明 书和合同(或订货单)等内容。 本标准适用于制造锌-…

如何把.mhd和.raw文件转换为DICOM文件

之前拿到体渲染的人头数据Manix&#xff0c;格式为mhd和raw格式的需要转换为DICOM ResearchGate上的一个帖子帮了大忙&#xff08;链接如下&#xff09;&#xff0c;有人说用ImageJ&#xff0c;有的说用XMedCon。我试了半天也没用ImageJ弄成功&#xff0c;但是XMedCon一下就好…

【有关mysql的实操记录】

一. 导入导出数据 1. 导出mysql的数据库作为备份文件 mysqldump -u 用户名 -p 数据库名 >导出文件路径.sql 回车之后&#xff0c;提示输入密码. 2. 导入mysql之前备份的数据库文件 mysql -u 用户名 -p 数据库名 <导入文件路径.sql 回车之后&#xff0c;提示输入密码 …

总结分析 | 基于phpmyadmin的渗透测试

一、什么是phpmyadmin&#xff1f; phpMyAdmin 是一个以PHP为基础&#xff0c;以Web-Base方式架构在网站主机上的MySQL的数据库管理工具&#xff0c;让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径&#xff0c;尤其要处理大…

CG-78静力水准仪采用压力传感器测量液体的压差

CG-78静力水准仪采用压力传感器测量液体的压差产品概述 静力水准仪是测量两点间或多点间相对高程变化的仪器。由储液器、高精度芯体和特别定制电路模块、保护罩等部件组成。沉降系统由多个同型号传感器组成&#xff0c;储液罐之间由通气管和通液管相连通&#xff0c;基准点置于…

循环神经网络——下篇【深度学习】【PyTorch】【d2l】

文章目录 6、循环神经网络6.7、深度循环神经网络6.7.1、理论部分6.7.2、代码实现 6.8、双向循环神经网络6.8.1、理论部分6.8.2、代码实现 6.9、机器翻译6.9.1、理论部分 6.10、编码器解码器架构6.10.1、理论部分 6、循环神经网络 6.7、深度循环神经网络 6.7.1、理论部分 设计…

瑞慈医疗:H1体检业务同比上涨101.2%,因何领跑医疗健康行业?

悄然间&#xff0c;医疗健康行业碰上历史性变革。水面之上&#xff0c;医院体检医院体检人潮涌动&#xff0c;愈来愈多的医院迈上扩建体检中心的步伐&#xff0c;赛道激增 20%为所有科室之首。水面之下&#xff0c;依靠信息技术使体检数字化、智能化的转型浪潮&#xff0c;也在…

TypeError: res.data.map is not a function微信小程序报错

从数据库查&#xff1a; 调用的是&#xff1a; 访问的springboot后端是这个&#xff1a; 打印出来如下&#xff1a; 看到是json格式的数据 [Users [id3, name刘雨昕, phone18094637788, admintrue, actionsJsonadmin, createAtSat Sep 16 10:11:20 CST 2023, tokentest], User…

小节9:Python之numpy

numpy全称为Numerical Python&#xff0c;是很多数据或科学相关Python包的基础。 1、numpy数组&#xff08;ND array N维数组&#xff09; numpy数组是更适合数据分析的列表。 numpy的数组和Python的内置列表有相似之处&#xff0c;也有不同之处。 相似之处&#xff1a;我们…

面向对象进阶

文章目录 面向对象进阶一.static1.静态变量2.静态方法3.static的注意事项 二.继承1.概述2.特点3.子类可以继承父类中的内容4.继承中成员变量的访问特点5.继承中成员方法的访问特点6.继承中构造方法的访问特点7.this和super使用总结 三.多态1.认识多态2.多态中调用成员的特点3.多…

简单的手机电脑无线传输方案@固定android生成ftp的IP地址(android@windows)

文章目录 abstractwindows浏览android文件环境准备客户端软件无线网络链接步骤其他方法 手机浏览电脑文件公网局域网everythingpython http.server 高级:固定android设备IP准备检查模块是否生效 windows 访问ftp服务器快捷方式命令行方式双击启动方式普通快捷方式映射新的网络位…

27.基于ADS的不等分威尔金森功分器设计

27.基于ADS的不等分威尔金森功分器设计 等分的威尔金森功分器可以使用ADS非常快速的设计出来&#xff0c;但是不等分的功分器却没有便捷的设计方法&#xff0c;在此给出快速的设计方法与案例&#xff0c;方便大家实际设计。 本次的工程链接&#xff1a; https://download.csdn…

Apache Beam 2.50.0发布,该版本包括改进功能和新功能

导读我们很高兴向您介绍 Beam 的新版本 2.50.0。该版本包括改进功能和新功能。请查看此版本的下载页面。 亮点 Spark 3.2.2 被用作 Spark 运行程序的默认版本&#xff08;#23804&#xff09;。Go SDK 新增默认本地运行程序&#xff0c;名为 Prism&#xff08;#24789&#xff0…

【SpringCloud微服务全家桶学习笔记-服务调用Ribbon/openFeign】

SpringCloud微服务全家桶学习笔记 内容&#xff1a;SpringCloud SpringCloud alibaba 技术栈&#xff1a;Java8mavengit&#xff0c;githubNginxRabbitMQSpringBoot2.0 仓库&#xff1a;链接 服务调用Ribbon 是什么&#xff1f; Ribbon是Netflix发布的开源项目&#xff…

WEB使用VUE3实现地图导航跳转

我们在用手机查看网页时可以通过传入经纬度去设置目的地然后跳转到对应的地图导航软件&#xff0c;如果没有下载软件则会跳转到下载界面 注意&#xff1a; 高德地图是一定会跳转到一个新网页然后去询问用户是否需要打开软件百度和腾讯地图是直接调用软件的这个方法有缺陷&…

Excel打开后关闭就马上跳出 Visual c++ Runtime Error R6025

环境&#xff1a; Win10 专业版 Excel 2016 绿盾加密环境 问题描述&#xff1a; Excel打开后关闭就马上跳出 visual c runtime error R6025 runtime error! program:c:\program files\microsoft office\office14\excle.exe r6025 -pure virtual function call 解决方案…