09.20 C++对C的扩充以及C++中的封装、SeqList

news2024/11/15 10:45:33

在这里插入图片描述
在这里插入图片描述

SeqList.h

#ifndef SEQLIST_H
#define SEQLIST_H

#include <iostream>
#include<memory.h>
#include<stdlib.h>
#include<string.h>


using namespace std;

//typedef int datatype;        //类型重命名
using datatype = int;

//封装一个顺序表
class SeqList
{
private:
    datatype *ptr;        //指向堆区空间的起始地址
    int size;             //总长度
    int len = 0;          //当前顺序表实际长度


public:
    void init(int n);

    //判空
    bool empty();
    //判满
    bool full();
    //尾插
    void push_back(datatype e);
    //任意位置插入
    void insert(int index);
    //任意位置删除
    void erase(int index);
    //定义展示函数
    void show();
    //求长度
    int get_size();
    //排序
    void sort(bool flag);
    //任意位置数据
    datatype& at(int index);
    //尾删
    void pop_back();

};

#endif // SEQLIST_H

SeqList.cpp

#include "SeqList.h"

void SeqList::init(int n)
{
    //在堆区申请出一个长度为n的空间,将其实地址赋值给ptr
    this->ptr = new datatype[n];


    //给len进行初始化
    this->len = 0;
    this->size = n;
}

//判空
bool SeqList::empty()
{
    return this->len == 0;
}

//判满
bool SeqList::full()
{
    return this->len == this->size;
}

//尾插
void SeqList::push_back(datatype e)
{
    //判断是否满了
    if(this->full())
    {
        return ;
    }

    this->ptr[len++] = e;

}

//任意位置插入
void SeqList::insert(int index){
    //判满
    if(this->full()){
        cout<<"列表满"<<endl;
        return;
    }

    if(index>size){
        cout<<"超出容器大小"<<endl;
        return;
    }
    if(index<0){
        cout<<"位置不合法"<<endl;
        return;
    }
    int in;
    cout<<"请输入要插入的内容:"<<endl;
    cin>>in;

    for(int i=len;i>=index;i--){
        ptr[i] = ptr[i-1];
        cout<<ptr[i]<<endl;
    }
    ptr[index-1]=in;
    len++;
}

//任意位置删除
void SeqList::erase(int index){
    if(index>size){
        cout<<"超出容器大小"<<endl;
        return;
    }
    if(index<0){
        cout<<"位置不合法"<<endl;
        return;
    }
    if(empty()){
        cout<<"表为空"<<endl;
        return;
    }
    for(int i=index-1;i<len-1;i++){
        ptr[i]=ptr[i+1];
    }
    len--;

}

//定义展示函数
void SeqList::show()
{
    //判空
    if(empty()){
        cout<<"表为空"<<endl;
        return;
    }

    cout<<"当前顺序表中的元素分别是:";
    for(int i=0; i<this->len; i++)
    {
        cout<<this->ptr[i]<<" ";
    }
    cout<<endl;
}
//求总长
int SeqList::get_size(){
    return this->len;
}

//获取任意位置的元素
datatype& SeqList::at(int index){
    return ptr[index-1];
}

// 排序函数
void SeqList::sort(bool flag){
    for (int i=0; i<len-1;i++) {
        for (int j=0; j<len-1-i;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 SeqList::pop_back(){
    if(empty()){
        cout<<"列表为空"<<endl;
        return;
    }
    len--;
}

mian.cpp

#include "SeqList.h"

using namespace std;

int main()
{

    SeqList sl;           //实例化一个顺序表对象
        sl.init(5);            //申请空间
        sl.push_back(1111);
        sl.push_back(2222);
        sl.push_back(3333);
        //sl.insert(1);
        //sl.erase(2);
        //cout<<sl.at(2)<<endl;
        sl.sort(0);
        sl.show();

    return 0;
}

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

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

相关文章

.ipynb 图解介绍,轻松入门,提升效率

目录 01 使用jupyter遇到的问题1.1 Python requires ipykernel installed or requires an update 1.1.1 查询所有内核 1.1.2 选择对应的Python版本 02 理解jupyter规则 2.1 系统命令 01 使用jupyter遇到的问题 1.1 Python requires ipykernel installed or requires an up…

MyBatis 基本操作 - XML版

目录 配置xml文件 一&#xff0c;查询 - Select 1.1 全列查询 1.2 赋值问题 二&#xff0c;新增 - insert 2.1 使用对象插入 2.2 获取主键 三&#xff0c;删除 - delete 四&#xff0c;修改 - update 配置xml文件 <?xml version"1.0" encoding"U…

全国自闭症寄宿学校:为孩子提供全方位关怀

在自闭症儿童教育的广阔领域中&#xff0c;全国范围内的寄宿学校如同一座座灯塔&#xff0c;照亮了这些特殊孩子前行的道路。它们不仅提供了专业的教育服务&#xff0c;更以无微不至的关怀&#xff0c;为孩子们构建了一个温暖的家。在广州这座充满温情的城市&#xff0c;星贝育…

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL20

数据选择器实现逻辑电路 描述 请使用此4选1数据选择器和必要的逻辑门实现下列表达式。 数据选择器的逻辑符号如下图&#xff1a; 数据选择器代码如下&#xff0c;可在本题答案中添加并例化此数据选择器。 module data_sel(input S0 ,input S1 …

2024.9.20 Python模式识别新国大EE5907,PCA主成分分析,LDA线性判别分析,GMM聚类分类,SVM支持向量机

1.PCA 主成分分析用于特征提取、可视化和分类 根据要求&#xff0c;我在第一个代码框中完成了从指定路径提取图像数据&#xff0c;将其转换为灰度图像并将其展平。在这里&#xff0c;我将数字 88 设置为我的照片的标签&#xff0c;然后将所有 10 张照片传入代码。然后我定义了…

java之杨辉三角问题

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 如何实现呢&#xff1f; 思路&#xff1a;首先&#xff0c;我们可以将杨辉三角视作i行j列的二维数组。除了第一行和第二行之外&am…

✨机器学习笔记(五)—— 神经网络,前向传播,TensorFlow

Course2-Week1: https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Advanced%20Learning%20Algorithms/week1机器学习笔记&#xff08;五&#xff09; 1️⃣神经网络&#xff08;Neural Network&#xff09;2️⃣前向传播&#xff08;Forward propaga…

最短路: Djikstra

最短路: Djikstra 适用于边权非负 如果存在负边权, 则当前距离dist最小的点, 不一定就是实际离源点最近的点,可能有负边导致其它路径离当前点更近 如下图所示, 如果存在负边, y点距离S点最近, 所以选中y点进行松弛, 贪心思想 当边权非负,离起点S最近的点,不能被更新, 如果在…

PointNet++改进策略 :模块改进 | SPVConv, 体素和点云特征融合提升小目标检测能力

论文题目&#xff1a;Searching Efficient 3D Architectures with Sparse Point-Voxel Convolution发布期刊&#xff1a;ECCV通讯地址&#xff1a;麻省理工 & 清华大学代码地址&#xff1a;https://github.com/mit-han-lab/spvnas 介绍 这篇论文的主题是如何为自驾车等应…

[译] Go语言的源起,发展和未来

本篇内容是根据2019年9月份Creating the Go programming language音频录制内容的整理与翻译, 两位主持人与Go 的创始人 Rob Pike 和 Robert Griesemer谈论了 Go 的起源、发展、影响和未来。这是一个史诗般的剧集&#xff0c;深入探讨了 Go 的历史和详细信息&#xff0c;以及他们…

手动部署并测试内网穿透(ssh 和 nginx)

原理回顾 首先需要一台连接了公网的云服务器&#xff0c;然后我们要访问的内网穿透对象最好是Linux服务器&#xff0c;比如虚拟机&#xff0c;然后我们通过向云服务器发送指令&#xff0c;云服务器再将指定发送给指定对象&#xff0c;让其能够执行命令。 总结就是&#xff1a…

数据结构与算法——Java实现 6.递归

要学会试着安静下来 —— 24.9.17 一、递归的定义 计算机科学中&#xff0c;递归是一种解决计算问题的方法&#xff0c;其中解决方案取决于同一类问题的更小子集 说明: ① 自己调用自己&#xff0c;如果说每个函数对应着一种解决方案&#xff0c;自己调用自己意味着解决方案是…

数据建模无法满足复杂业务需求?别慌,数据开发平台可以完美互补!

前言 数据可视化建模无论是对于企业的数字化转型&#xff0c;还是对数据资源的价值开发来说&#xff0c;都是至关重要的工具&#xff0c;小兵在前文《数据可视化建模平台介绍》。中有详细介绍过他的能力&#xff0c;包括面向多源异构的企业数据&#xff0c;为企业提供数据集成…

web基础—dvwa靶场(十一)CSP Bypass

CSP Bypass(CSP 绕过) 内容安全策略&#xff08;CSP&#xff09;用于定义脚本和其他资源可以从何处加载或执行&#xff0c;本模块将指导您根据开发人员犯下的常见错误来绕过该策略。 这些漏洞都不是 CSP 中的实际漏洞&#xff0c;它们都是实现 CSP 的方式中的漏洞。 绕过内容安…

xtop:如何debug fail reason

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 fix_xx_violations之后,工具会报告fail reason summary,通过man reason_name可以获知fail原因&#x

STM32(十六):MPU6050简介

MPU6050 MPU6050是一个6轴姿态传感器&#xff0c;可以测量芯片自身X、Y、Z轴的加速度、角速度参数&#xff0c;通过数据融合&#xff0c;可进一步得到姿态角&#xff0c;常应用于平衡车、飞行器等需要检测自身姿态的场景。 3轴加速度计&#xff08;Accelerometer&#…

攻防世界--->gametime

做题笔记。 前言&#xff1a; 因为有意思&#xff0c;所以&#xff0c;&#xff0c;&#xff0c;打通关了。。哈哈哈。 题外话&#xff1a;哦&#xff0c;程序结果还在&#xff0c;是因为我是在WSL—Debian上运行的。你还别说&#xff0c;真挺好用的&#xff0c;vm虚拟机能不…

Node-RED和物联网分析:实时数据处理和可视化平台

这篇论文的标题是《Node-RED and IoT Analytics: A Real-Time Data Processing and Visualization Platform》&#xff0c;发表在《Tech-Sphere Journal of Pure and Applied Sciences (TSJPAS)》2024年第一期上。论文主要探讨了Node-RED和物联网分析在物联网(IoT)实时数据处理…

列表、数组排序总结:Collections.sort()、list.sort()、list.stream().sorted()、Arrays.sort()

列表类型 一.Collections.sort() Collections.sort()用于List类型的排序&#xff0c;其提供了两个重载方法&#xff1a; 1.sort(List<T> list) &#xff08;1&#xff09;List指定泛型时只能指定引用数据类型&#xff0c;也就是说无法用于基本数据类型的排序。 &am…

9.20作业

手动封装一个顺序表&#xff08;SeqList&#xff09;,分文件编译实现 有私有成员&#xff1a; 顺序表数组的起始地址 ptr、 顺序表的总长度&#xff1a;size、顺序表的实际长度&#xff1a;len 成员函数&#xff1a; 初始化 init(int n) 判空&#xff1a;empty 判满&#xff1…