学习C++的第三天!

news2024/11/13 13:00:01

C++对C的函数部分的扩充

封装

#include <iostream>
#include <memory.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
using datatype = int;
//封装一个顺序表
class SeqList 
{
private:
    datatype* ptr;        //指向堆区空间的起始地址
    int size;             //总长度
    int len = 0;          //当前顺序表实际长度
public:
    void init(int n) 
    {
        //在堆区申请出一个长度为 n 的空间,将其实地址赋值给 ptr
        this->ptr = new datatype[n];
        //给 len 进行初始化
        this->len = 0;
        this->size = n;
    }
    //判空
    bool empty() 
    {
        return this->len == 0;
    }
    //判满
    bool full() 
    {
        return this->len == this->size;
    }
    //尾插
    void push_back(datatype e) 
    {
        //判断是否满了
        if (this->full()) 
        {
            return;
        }
        this->ptr[len++] = e;
    }
    //插入
    void insert(int index, datatype e) 
    {
        if (index < 0 || index > len) return;
        if (full()) return;
        for (int i = len; i > index; i--) 
        {
            ptr[i] = ptr[i - 1];
        }
        ptr[index] = e;
        len++;
    }
    //任意位置删除
    void erase(int index)
    {
        if (index < 0 || index >= len) return;
        for (int i = index; i < len - 1; i++) 
        {
            ptr[i] = ptr[i + 1];
        }
        len--;
    }
    //尾删
    void pop_back() 
    {
        if (empty()) return;
        len--;
    }
    //求长度
    int length() {
        return len;
    }
    //获取任意位置元素
    datatype at(int index) 
    {
        if (index < 0 || index >= len) 
        {
            // 返回一个特定值表示错误
            return -1;
        }
        return ptr[index];
    }
    //将顺序表进行排序
    void sort(bool flag) 
    {
        for (int i = 0; i < len - 1; i++) 
        {
            for (int j = 0; j < len - i - 1; j++) 
            {
                if ((flag && ptr[j] > ptr[j + 1]) || (!flag && ptr[j] < ptr[j + 1])) 
                {
                    datatype temp = ptr[j];
                    ptr[j] = ptr[j + 1];
                    ptr[j + 1] = temp;
                }
            }
        }
    }
    //定义展示函数
    void show() 
    {
        //判空
        cout << "当前顺序表中的元素分别是:";
        for (int i = 0; i < this->len; i++) 
        {
            cout << this->ptr[i] << " ";
        }
        cout << endl;
    }
};
int main() 
{
    SeqList sl;           //实例化一个顺序表对象
    sl.init(5);            //申请空间
    sl.push_back(1);
    sl.push_back(3);
    sl.push_back(5);
    sl.show();
    sl.insert(1, 2);
    sl.show();
    sl.erase(2);
    sl.show();
    sl.pop_back();
    sl.show();
    cout << "顺序表长度为:" << sl.length() << endl;
    int elementAtIndex = sl.at(1);
    if (elementAtIndex!= -1) 
    {
        cout<< elementAtIndex << endl;
    } 
    else 
    {
        cout << "错误" << endl;
    }
    sl.sort(true);
    sl.show();
    sl.sort(false);
    sl.show();
    return 0;
}

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

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

相关文章

基于嵌入式的智能物流柜( 触摸屏/0.96寸oled屏)

演示 智能物流柜&#xff08;基础版&#xff09; 智能物流柜&#xff08;升级版&#xff09; 前言 这是本人在大二在学校接的一个简单的实验室项目&#xff0c;之前发布了一个&#xff0c;由于那是在暑假&#xff0c;家里器材有限&#xff0c;代码敲完之后&#xff0c;用面包板…

PyTorch深度学习快速入门教程【土堆】基础知识篇

Juptyer 版本&#xff1a; Python 3.9.19Pytorch 2.4.1 (pytorch0) C:\Users\25694>conda install nb_conda_kernels(pytorch0) C:\Users\25694>jupyter notebook使用conda环境的pytorch&#xff1a; 成功解决python.exe无法找到程序入口 无法定位程序输入点 shifte…

机器学习-深度学习数据集之打架斗殴识别数据集

关于“打架识别数据集”&#xff0c;这是一个专门设计用于训练计算机视觉模型以识别打架、摔倒以及持械行为的数据集。此类数据集对于开发安全监控系统至关重要&#xff0c;可以帮助在公共场所如学校、酒吧或地铁站等地及时发现潜在的暴力事件&#xff0c;从而快速采取行动来防…

anaconda的windows新手安装及配置教程(适用于物联网工程、计算机专业)

第一步:点击免费下载 点击我直达anaconda官网">——>点击我直达anaconda官网 第二步:跳过注册 第三步:下载windows版本 第四步:安装步骤 1.Next (下一步) 2.I Agree (我同意) 3.默认即可,下一步 4.安装地址可以选到D盘,如果没有默认也行,只是一个…

上传富文本插入文件时报错:JSON parse error: Unexpected character解决办法

方式一&#xff08;加密解密&#xff09;&#xff1a; 1.前端 &#xff08;1&#xff09;安装 crypto-js npm install crypto-js&#xff08;2&#xff09;util下创建asc.js asc.js import CryptoJS from crypto-js// 需要和后端一致 const KEY CryptoJS.enc.Utf8.parse(…

《Linux基础》练习操作

一、文件目录类操作 1. 创建新用户user&#xff0c;其中用户名为学生姓名首字小写(如:张三&#xff0c;用户名为zsan) 将/etc/passwd拷贝到/home/user下面。修改/home/user/passwd,在文件的第15行下添加“hello 学号姓名”&#xff0c;光标停留在 hello 学号姓名…

[漏洞复现]泛微e-mobile cdnfile文件读取漏洞分析复现

如果觉得该文章有帮助的&#xff0c;麻烦师傅们可以搜索下微信公众号&#xff1a;良月安全。点个关注&#xff0c;感谢师傅们的支持。 免责声明 本号所发布的所有内容&#xff0c;包括但不限于信息、工具、项目以及文章&#xff0c;均旨在提供学习与研究之用。所有工具安全性…

金属3D打印经济效益高吗?

在我国制造业迈向产业升级的重要阶段&#xff0c;3D打印技术如同一股强劲的新风&#xff0c;特别是在航空航天、汽车、生物医疗等领域&#xff0c;已成为复杂构件制造的“明星”技术。那么&#xff0c;对于众多生产厂家而言&#xff0c;金属3D打印的经济账到底怎么算&#xff1…

永磁同步电机谐波抑制算法(8)——基于神经网络的傻瓜式(无需知道谐波频率)谐波抑制

1.简介 前面的内容已经介绍了很多谐波抑制的方法&#xff1a;多同步、PIR、陷波器等等。也介绍了比较多的谐波来源&#xff1a;死区&#xff08;5、7、11、13等次相电流谐波&#xff09;、绕组不对称&#xff08;基波不等幅值、3次相电流谐波&#xff09;等等。 上述的方法都…

基于springboot+vue超市管理系统

基于springbootvue超市管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本无人超市管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助使用者在…

进程间关系与进程守护

一、进程组 1、理解 每一个进程除了有一个进程 ID(PID)之外 还属于一个进程组&#xff0c; 进程组是一个或者多个进程的集合&#xff0c; 一个进程组可以包含多个进程。 每一个进程组也有一个唯一的进程组 ID(PGID)&#xff0c; 并且这个 PGID 类似于进程 ID&#xff0c; 同样…

不只是模仿,伯克利新研究赋予机器人跨实体自主学习的能力,零样本时代已来

导读&#xff1a; 在当今科技飞速发展的时代&#xff0c;机器人技术正不断地给我们带来惊喜和变革。2024 年 9 月&#xff0c;一篇来自加州大学伯克利分校、丰田研究所和Physical Intelligence 的研究论文RoVi-Aug: Robot and Viewpoint Augmentation for Cross-Embodiment Rob…

2024/9/20 使用QT实现扫雷游戏

有三种难度初级6x6 中级10x10 高级16x16 完成游戏 游戏失败后&#xff0c;无法再次完成游戏&#xff0c;只能重新开始一局 对Qpushbutton进行重写 mybutton.h #ifndef MYBUTTON_H #define MYBUTTON_H #include <QObject> #include <QWidget> #include <QPus…

基于ACMEv2协议的免费SSL证书申请-支持Let‘s Encrypt/Google/ZeroSSL

项目&#xff1a;https://github.com/cook-code-jazor/acmex 非开源&#xff0c;使用webui管理证书的申请&#xff0c;所有文件本地化存储&#xff0c;支持windows/linux/osx。 证书申请直连ACMEv2服务商&#xff0c;没有任何中间接口&#xff0c;支持Lets Encrypt/Google/Ze…

【HTML5】html5开篇基础(1)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第二篇-着色器制作】

在上一篇文章中&#xff0c;我们已经理顺了实现流程。 接下来&#xff0c;我们将在UE5中&#xff0c;从头开始一步一步地构建一次流程。 通过这种方法&#xff0c;我们可以借助一个熟悉的开发环境&#xff0c;使那些对着色器不太熟悉的朋友们更好地理解着色器的工作原理。 这篇…

百望云生态伙伴大会在北京、深圳、昆明三地举办,携手共赢数字化未来!

伴随着金税四期数电票、乐企加速扩围&#xff0c;激发了企业大量的财税数字化转型的需求&#xff0c;为财税服务市场注入了前所有未有的活力。2024年7月9日&#xff0c;百望云成功登陆港交所&#xff0c;成为港股“电子发票第一股”&#xff0c;加码财税业务布局&#xff0c;纵…

Spring Boot利用dag加速Spring beans初始化

1.什么是Dag&#xff1f; 有向无环图(Directed Acyclic Graph)&#xff0c;简称DAG&#xff0c;是一种有向图&#xff0c;其中没有从节点出发经过若干条边后再回到该节点的路径。换句话说&#xff0c;DAG中不存在环路。这种数据结构常用于表示并解决具有依赖关系的问题。 DAG的…

生信初学者教程(一):欢迎

文章目录 配套数据R包版本安装包版权答疑在生物信息学(生信)领域,随着高通量测序技术的不断发展,大量数据涌现,为科研工作者提供了丰富的资源。然而,对于初学者而言,如何从海量的数据中挖掘有价值的信息,并开展一个完整的生信项目,仍然是一个挑战。目前,市面上针对初…

网络层协议 ——— IP协议

文章目录 概念协议头格式分片与组装网段划分IP地址的数量限制私有IP和公有IP路由 概念 IP协议&#xff08;Internet Protocol&#xff09;是互联网上使用的一种网络协议&#xff0c;也是互联网的基础协议之一。它属于TCP/IP体系中的网络层协议&#xff0c;主要负责将数据包从源…