2024.8.28 C++

embedded/2024/10/22 18:30:14/

使用C++手动封装一个顺序表,包含成员数组一个,成员变量N个

代码

#include <iostream>
//使用C++手动封装一个顺序表,包含成员数组一个,成员变量N个
using namespace std;using datatype = int;
struct Seqlist
{
private:datatype *data;int size = 0;int len = 0;
public:void init(int s);           //初始化函数bool empty();               //判空函数bool full();                //判满函数bool add(datatype e);       //添加数据函数void showsize();             //显示容量int length();               //求当前顺序表的实际长度bool insert_pos(int pos,datatype e);   //任意位置插入函数bool delete_pos(int pos);   //任意位置删除函数datatype &at(int index);    //访问容器中任意一个元素 atvoid expand();              //二倍扩容void show();                //展示顺序表
};void Seqlist::init(int s)
{size = s;data = new datatype[size]{0};
}bool Seqlist::empty()
{return len == 0;
}bool Seqlist::full()
{return len == size;
}bool Seqlist::add(datatype e)
{if(full()){expand();}data[len] = e;len++;return true;
}void Seqlist::showsize()
{cout << "size = " << size << endl;
}int Seqlist::length()
{return len;
}bool Seqlist::insert_pos(int pos,datatype e)
{if(full()){return false;}for(int i=len;i>pos;i--){data[i] = data[i-1];}data[pos] = e;len++;return true;
}bool Seqlist::delete_pos(int pos)
{if(empty()){cout << "没有数据" << endl;return false;}for(int i=pos;i<len;i++){data[i] = data[i+1];}len--;return true;
}datatype &Seqlist::at(int index)
{return data[index];
}void Seqlist::show()
{for(int i=0;i<len;i++){cout << data[i] << " ";}cout << endl;
}void Seqlist::expand()
{size = 2 * size;datatype *newdata = new datatype[size]{0};int *p = data;for(int i=0;i<len;i++){newdata[i] = data[i];}data = newdata;delete []p;
}
int main()
{Seqlist s1;s1.init(8);for(int i=1;i<=5;i++){s1.add(i);}cout << "length = " << s1.length() << endl;s1.show();s1.insert_pos(2,9);cout << "length = " << s1.length() << endl;s1.show();s1.delete_pos(2);cout << "length = " << s1.length() << endl;s1.show();s1.at(0) = 2;s1.show();s1.add(8);s1.add(8);s1.add(8);s1.add(8);s1.show();cout << "length = " << s1.length() << endl;s1.showsize();return 0;
}

 效果图

思维导图


http://www.ppmy.cn/embedded/104037.html

相关文章

Linux——进程管理

五、附带数据信息的信号处理 int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact); 功能&#xff1a;向内核注册一个信号处理函数 signum&#xff1a;要捕获的信号编号 act&#xff1a; 设置要处理的动作 olact&#xff1…

【Python】运行tcl、perl程序

只要你的环境可以执行tcl、perl脚本&#xff0c;也就是说安装了perl、tcl的解释器。那么python程序就可以执行tcl、perl。 示例&#xff1a; import subprocesstcl_script_path "D:\\Perl_WorkSpace\\test.tcl" tcl_run_result subprocess.run([tclsh, tcl_scrip…

基于自适应狮群算法优化GRU神经网络进水量预测,gsclst-gru进水量预测,基于黄金正弦改进的狮群算法优化GRU进水量预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 gru的原理 狮群群算法原理 基于自适应狮群算法优化BILSTM神经网络进水量预测,gsclst-gru进水量预测,基于黄金正弦改进的狮群算法优化BILSTM进水量预测 结果分析 展望 参考论文 背影 传统的方法回归分析容易陷入局部最优准确率…

基于web旅游信息平台的设计与实现

三、系统分析 &#xff08;一&#xff09;识别参与者 对于平台功能需求的分析&#xff0c;我们定位了四种参与者&#xff1a;普通用户、注册用户、企业级用户、网站维护人员。现对参与者描述如下&#xff1a; &#xff08;1&#xff09;普通用户 描述&#xff1a;可以注册成…

【手撕数据结构】二叉树的性质

目录 叶子节点和边的性质概念小试牛刀 叶子节点和边的性质 概念 可以看到度为0的节点如F没有边&#xff0c;度为1的节点如C有一条边&#xff0c;而度为2的节点如B有两条边。那么设度为2的节点为a个&#xff0c;度为1的节点为b个。二叉树边 2ab另⼀⽅⾯&#xff0c;由于共有 a…

访问者模式详解

访问者模式 简介: 类的内部结构不变的情况下&#xff0c;不同的访问者访问这个对象都会呈现出不同的处理方式。 人话: 其实就是为了解决类结构不变但操作处理逻辑易变的问题&#xff0c;把对数据的操作都封装到访问者类中&#xff0c; 我们只需要调用不同的访问者&#xff0c;…

vue3+el-tale封装(编辑、删除、查看详情按钮一起封装)

// 封装源码&#xff08;子组件&#xff09; <template><el-table :data"tableData" style"width: 100%"><el-table-columnv-for"(column, index) in tableDataHeader":label"column.label":key"index":prop…

远程调用以及注册中心Nacos

小编目前大一&#xff0c;刚开始着手学习微服务的相关知识&#xff0c;小编会把它们整理成知识点发布出来。我认为同为初学者&#xff0c;我把我对知识点的理解以这种代码加观点的方式分享出来不仅加深了我的理解&#xff0c;或许在某个时候对你也有所帮助&#xff0c;同时也欢…