C++的扩充和封装

作业:

手动封装一个顺序表(SeqList),分文件编译实现

有私有成员:顺序表数组的起始地址 ptr、 顺序表的总长度:size、顺序表的实际长度:len

成员函数:初始化 init(int n)

判空:empty

判满:full

尾插:push_back

插入:insert(int index)

任意位置删除:erase(int index)

尾删: pop_back

求长度:size()

获取任意位置元素:& at(int inex)

将顺序表进行排序:sort(bool flag) //flag 为真,表示升序,否则是降序

头文件:

#ifndef SEQLIST_H
#define SEQLIST_H#include <iostream>using namespace std;
using datatype = int;class Sqlist
{
private:datatype *data; //顺序表数组int size;     //数组的大小int len = 0;  //数组的实际长度public:void init(int n);  //初始化函数bool empty();      //判空bool full();       //判满void push_back(datatype value); //尾插void insert(int index,datatype value); //任意位置插入void erase(int index);  //任意位置删除void pop_back(); //尾删int listsize();  //求长度datatype & at(int inex);  //获取任意位置元素void sort(bool flag);   //排序,真为升序,假为降void show();         //展示
};#endif // SEQLIST_H

源文件:

#include "seqlist.h"void Sqlist::init(int n)
{this->data = new datatype[n];//申请长度n的空间,附给data//初始化this->len = 0;this->size = n;
}
//判空
bool Sqlist::empty()
{return this->len == 0;
}
//判满
bool Sqlist::full()
{return this->len == this->size;
}
//尾插
void Sqlist::push_back(datatype value)
{if(this->full()){return;}this->data[len++] = value;
}
//任意位置插入
void Sqlist::insert(int index, datatype value)
{if(this->full()){cout<<"表满了无法插入"<<endl;return;}if(index>this->len||index<=0){cout<<"插入位置错误"<<endl;return;}for(int i = this->len;i>index-1;i--){data[i] = data[i-1];}data[index-1] = value;this->len++;
}
//任意位置删除
void Sqlist::erase(int index)
{if(this->empty()){cout<<"表为空无删除对象"<<endl;return;}if(index>this->len||index<=0){cout<<"删除位置错误"<<endl;return;}for(int i = index-1;i<this->len-1;i++){data[i] = data[i+1];}this->len--;
}
//尾删
void Sqlist::pop_back()
{if(this->empty()){cout<<"表为空无删除对象"<<endl;return;}this->len--;
}
//求长度
int Sqlist::listsize()
{return this->len;
}
//获取任意位置元素
datatype & Sqlist::at(int index)
{if(this->empty()){throw std::out_of_range("表为空无对象");}if(index>this->len||index<=0){throw std::out_of_range("位置错误");}return this->data[index-1];
}
//排序,真为升序,假为降
void Sqlist::sort(bool flag)
{if(this->empty()){cout<<"表为空无对象"<<endl;return;}int i,j;if(flag){for(i = 1;i<this->len;i++){for(j = 0;j<this->len - i;j++){if(data[j]>data[j+1]){datatype temp = data[j];data[j] = data[j+1];data[j+1] = temp;}}}}else{for(i = 1;i<this->len;i++){for(j = 0;j<this->len - i;j++){if(data[j]<data[j+1]){datatype temp = data[j];data[j] = data[j+1];data[j+1] = temp;}}}}
}
//展示
void Sqlist::show()
{if(this->empty()){cout<<"表为空无对象"<<endl;return;}cout<<"当前顺序表中的元素分别是:";for(int i = 0;i<this->len;i++){cout<<this->data[i]<<" ";}cout<<endl;
}

主程序:

#include "seqlist.h"
int main()
{Sqlist s; //实例化一个顺序表对象s.init(5);//申请空间s.push_back(3);//头插s.push_back(4);s.push_back(2);s.show();s.insert(2,8);//任意位置插入s.show();s.erase(1);//任意位置删除s.show();s.pop_back();//尾删s.show();cout<<"长度 = "<<s.listsize()<<endl;cout<<"2号位置元素 = "<<s.at(2)<<endl;s.sort(1);s.show();return 0;
}

思维导图:

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

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

相关文章

Zabbix 6.4添加中文语言

/usr/share/zabbix/include/locales .inc .phplocale -agrep “zh_CN" yum install langpacks-zh_CN.noarch y y y

浅谈死锁以及判断死锁的方法

引言 我们在并发情况下见过很多种锁&#xff0c;synchronized&#xff0c;ReentrantLock 等等&#xff0c;这些锁是为了保证线程安全&#xff0c;使线程同步的锁&#xff0c;与今天所要学习的死锁并不相同&#xff0c;死锁并不是一种锁&#xff0c;而是一种现象。 官方定义&a…

【CTF Reverse】XCTF GFSJ1101 Mine- Writeup(反编译+动态调试+Base58编码)

Mine- 运气怎么这么差&#xff1f; 原理 Base58 Base58是用于比特币&#xff08;Bitcoin&#xff09;中使用的一种独特的编码方式&#xff0c;主要用于产生Bitcoin的钱包地址。 相比Base64&#xff0c;Base58不使用数字"0"&#xff0c;字母大写"O"&…

想要监控电脑?这十款电脑监控软件推荐!

在选择电脑监控软件时&#xff0c;重要的是要明确你的监控目的&#xff0c;并确保所选软件符合法律法规和道德标准。以下是我为你推荐的十款电脑监控软件&#xff0c;它们各自具有不同的特点和功能&#xff0c;适用于不同的场景和需求&#xff1a; 1.安企神&#xff1a; 作为…

从混乱到清晰!借助Kimi掌握螺旋型论文结构的秘诀!

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 写学术论文有时会让人感到头疼&#xff0c;特别是在组织结构和理清思路时&#xff0c;往往觉得无从下手。 其实&#xff0c;找到合适的结构不仅能帮你清晰地表达研究成果&#xff0c;还能让你的论文更有说…

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

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

PCL 读取txt格式点云并可视化

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09; 一、概述 1.1原理 TXT格式的点云文…

4.5 pandas 实战 分析抖音播放数据(1)

课程目标 基于pandas对抖音播放数据做数据分析 数据准备 点此去下载 课程内容 导包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns plt.rcParams["font.family"] "SimHei" plt.rcParams["ax…

焦化行业的变革力量:智能巡检机器人

根据相关数据&#xff0c;2024年1-2月份&#xff0c;焦炭产量为8039.5万吨&#xff0c;同比增长2.1%&#xff0c;这表明&#xff0c;我国焦化行业仍是全球最大的焦炭生产国和消费国&#xff0c;其市场规模占据了重要地位。焦化企业主要集中在山西省&#xff0c;其合计焦炭产能约…

c++的decltype关键字

它可以将变量声明为表达式指定的类型

Hash入门

unordered_set void test_unordered_set() {unordered_set<int> us;us.insert(4);us.insert(2);us.insert(1);us.insert(5);us.insert(6);us.insert(2);us.insert(2);//去重unordered_set<int>::iterator it us.begin();while (it ! us.end()){cout << *it…

MyBatis-Plus代码一键生成

官网地址&#xff1a;MyBatis-Plus &#x1f680; 为简化开发而生 开始&#xff1a; 添加依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.7</version&g…

IMS 在线计费 IMS 离线计费

目录 1. IMS 在线计费 1.1 主要内容 1.2 IMS 在线计费架构 ​编辑1.3 IMS 在线计费方案 1.4 IMS 在线计费的关键步骤 1.5 在线计费的基本流程 1.6 IMS Information AVP 2. IMS 离线计费 2.1 IMS 离线计费架构 2.2 IMS 离线计费概述 2.3 什么时候 AS 给 CG 发送 ACR?…

独立站技能树/工具箱1.0 总纲篇丨出海笔记

正所谓要把一件事做到90分很难&#xff0c;但做到60分基本上照着SOP做到位都没问题&#xff0c;如果我们能把每件事都做到60分&#xff0c;那绝对比至少60%的人都强&#xff0c;除非你的对手不讲武德——那就是他很可能看了我这篇文章&#xff0c;不但每方面都超过及格线&#…

油耳拿什么清理比较好?比较推荐哪种可视耳勺

相信很多小伙伴都有挖耳朵方面的困扰&#xff0c;尤其是油性耳朵的人&#xff0c;用棉签掏耳朵时感觉越掏越往里去&#xff0c;而使用普通耳勺又因为材质过硬&#xff0c;在使用过程中容易刮伤耳道。于是市面上出现了可视挖耳勺&#xff0c;让人们可以在看得见的情况下取出耳道…

解决novnc1.2.0不能使用剪切板的问题

1.下载资源文件asciidef.js,在rfb.js中引入 2.修改rfb.js中clipboardPasteFrom方法如下 clipboardPasteFrom(text) {if (this._rfbConnectionState !== connected || this._viewOnly) {return; }if (this._clipboardServerCapabilitiesFormats[extendedClipboardFormatText] &…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC&#xff0c;于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核&#xff08;big.LITTLE&#xff09;。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320&#xff0c;频率…

研发企业的源代码防泄密秘籍:一机两用的沙盒电脑

在数字化时代&#xff0c;数据安全已成为企业最关注的问题之一。尤其是对于研发密集型企业&#xff0c;源代码的安全更是核心资产。SDC沙盒&#xff0c;正是为了应对这一挑战而设计的先进数据防泄密解决方案。 全面保护&#xff0c;从源头开始 SDC沙盒采用独特的代码级安全设…

python线程(python threading模块、python多线程)(守护线程与非守护线程)

文章目录 Python多线程入门1. Python多线程概述2. threading模块基础- Thread 类: 这是一个代表线程的类。可以通过创建Thread类的实例来新建一个线程。- Lock 类: 在多线程环境中&#xff0c;为了防止数据错乱&#xff0c;通常需要用到锁机制。Lock类提供了基本的锁功能&#…

如日中天的AI大模型,也到了发展幻灭期!

近期 Gartner发布了《新兴技术成熟度曲线》&#xff0c;其中生成式 AI &#xff08;GenAI&#xff09; 正式进入到了幻灭期。 2018 年 6 月&#xff0c;OpenAI发布GPT-1模型&#xff0c;生成式AI开始向产品化发展。 到2022年的GPT-3.5发布&#xff0c;并且ChatGPT首次向公众推…