day6_C++

day6_C++

  • 模板 栈
  • 模板 队列
  • 思维导图

模板 栈

stack.h

#ifndef STACK_H
#define STACK_H#include <iostream>
#include <cstring>using namespace std;#define MAX 5template<typename T>
class Stack
{
public:/*构造函数*/Stack();/*拷贝构造函数*/Stack(const Stack& others);/*析构函数*/~Stack();/*判满 true 满 */bool is_full();/*判满 true 空*/bool is_empty();/*入栈*/void in_stack(T e);/*出栈*/T out_stack();/*清空栈*/void clear_stack();/*求栈顶元素*/T get_stackTop_E();/*求栈的大小*/void get_stackSize();private:int top;T *data;
};#endif // STACK_H

stack.c

#include "stack.h"template<typename T>
Stack<T>::Stack():data(new T[MAX]),top(-1)
{memset(this->data,0,MAX);//在堆区申请max个int大小的空间cout<<"栈容器初始化成功"<<endl;
}template<typename T>
Stack<T>::Stack(const Stack& others):data(new T[MAX]),top(others.top)
{//深拷贝,将堆区内容也拷贝进来for(int i = 0;i<MAX-1;i++){this->data[i] = others.data[i];}cout<<"拷贝完成"<<endl;
}template<typename T>
Stack<T>::~Stack()
{//释放堆区数据delete []data;cout<<"析构完成"<<endl;
}template<typename T>
bool Stack<T>::is_full()
{if(this->top ==MAX-1)return true;elsereturn false;
}template<typename T>
bool Stack<T>::is_empty()
{if(this->top == -1)return true;elsereturn false;
}template<typename T>
void Stack<T>::in_stack(T e)
{if(this->is_full()==false){this->top++;this->data[this->top] = e;cout<<"入栈成功"<<endl;}else{cout<<"入栈失败,栈满"<<endl;}
}template<typename T>
T Stack<T>::out_stack()
{if(this->is_empty()==false){T temp = this->data[this->top];this->top--;return temp;}else{cout<<"出栈失败,栈空"<<endl;return NULL;}
}template<typename T>
void Stack<T>::clear_stack()
{if(this->is_empty()==false){this->top=-1;cout<<"清空成功"<<endl;}else{cout<<"栈空,无需清理"<<endl;}
}template<typename T>
T Stack<T>::get_stackTop_E()
{if(this->is_empty()==true)return NULL;return this->data[this->top];
}template<typename T>
void Stack<T>::get_stackSize(){cout<<"栈中有元素 "<<this->top+1<<"个"<<endl;

}

模板 队列

queue.c

#ifndef QUEUE_H
#define QUEUE_H
#include <iostream>
#include <cstring>using namespace std;#define MAX 5template<typename T>
class Queue
{public:/*构造函数*/Queue();/*拷贝构造函数*/Queue(const Queue<T>& others);/*析构函数*/~Queue();/*判满 true 满 */bool is_full();/*判满 true 空*/bool is_empty();/*入队*/void in_queue(T e);/*出队*/T out_queue();/*清空队*/void clear_queue();/*求队的大小*/void get_queueSize();private:T *data;int font;int tail;
};#endif // QUEUE_H

queue.c

#include "queue.h"template<typename T>
Queue<T>::Queue():data(new T [MAX]),tail(0),font(0)
{memset(this->data,0,MAX);cout<<"循环队列初始化成功"<<endl;
}template<typename T>
Queue<T>::Queue(const Queue<T>& others):data(new T[MAX]),font(others.font),tail(others.tail)
{//深拷贝int f = this->font;int t = this->tail;while ((f+MAX)%MAX==t) {this->data[f] = others.data[f];f++;}cout<<"拷贝完成"<<endl;
}template<typename T>
bool Queue<T>::is_full()
{if((this->tail+1)%MAX == this->font){return true;}return false;
}template<typename T>
bool Queue<T>::is_empty()
{if(this->font == this->tail){return true;}return false;
}template<typename T>
Queue<T>::~Queue()
{//释放堆区数据delete []data;cout<<"析构完成"<<endl;
}template<typename T>
void Queue<T>::in_queue(T e)
{if(this->is_full() == true){cout<<"队列满了"<<endl;return ;}this->data[this->tail] = e;this->tail =  (this->tail+1)%MAX;cout<<"入队成功"<<endl;
}/*出队*/
template<typename T>
T Queue<T>::out_queue()
{if(this->is_empty() == true){cout<<"队列空,无元素"<<endl;return NULL;}int temp =  this->data[this->font];this->font = (this->font+1)%MAX;return temp;
}template<typename T>
void Queue<T>::clear_queue()
{if(this->is_empty() == true){cout<<"队列空,无元素"<<endl;return;}this->font = 0;this->tail = 0;
}template<typename T>
void Queue<T>::get_queueSize()
{cout<<"队列的大小是:" <<(this->tail-this->font+MAX)%MAX<<endl;
}

思维导图

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小谈设计模式(1)—总序

小谈设计模式&#xff08;1&#xff09;—总序 专栏地址开始操作设计模式总论设计模式是什么组成要素模式名称问题描述解决方案效果描述 设计模式有什么作用提供可重用的解决方案提高代码的可读性和可维护性促进代码的可扩展性提高代码的灵活性和可重用性促进团队合作和沟通作用…

【轻NAS】Windows搭建可道云私有云盘,并内网穿透公网访问

文章目录 1.前言2. Kodcloud网站搭建2.1. Kodcloud下载和安装2.2 Kodcloud网页测试 3. cpolar内网穿透的安装和注册4. 本地网页发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6.结语 1.前言 云存储作为近些年兴起的概念&#xff0c;成功吸引了各大互联网厂商下场&…

re学习(37)DASCTF 2023_7 controlflow

IDA载入一下 发现flag的长度为40&#xff0c;然后将input[i]的值赋值给str[i]&#xff0c;str[i]又执行一个异或操作&#xff0c;但是上面又有一些函数&#xff0c;导致这个程序的控制流有点奇怪..... 输入40只&#xff0c;检验是否是flag。 F5直接罢工了&#xff0c;暂时先忽…

【深度学习实战—6】:基于Pytorch的血细胞图像分类(通用型图像分类程序)

✨博客主页&#xff1a;米开朗琪罗~&#x1f388; ✨博主爱好&#xff1a;羽毛球&#x1f3f8; ✨年轻人要&#xff1a;Living for the moment&#xff08;活在当下&#xff09;&#xff01;&#x1f4aa; &#x1f3c6;推荐专栏&#xff1a;【图像处理】【千锤百炼Python】【深…

浏览器进程,性能指标,性能优化

目录 浏览器进程&#xff1a;多进程 主进程&#xff1a;显示、交互&#xff0c;增删进程 UI进程&#xff1a;控制地址栏、书签、前进后退 存储进程&#xff1a;cookie&#xff0c;webstorage&#xff0c;indexDB 渲染进程&#xff1a;每个标签页或窗口都有一个独立的渲染进…

Element UI 表单验证规则动态失效问题

Element 版本&#xff1a;v2.15.3 问题背景 如下代码所示&#xff1a;有一个上传文件的 input 组件&#xff0c;在更新的时候&#xff0c;如果不上传文件表示不更新&#xff0c;如果要更新则点击 「重新上传」按钮将上传组件显示出来 <el-form ref"form" :mode…

day42

#include <iostream>using namespace std; template <typename T> class stu { private:T num[20];T head;T low; public:stu(){}stu(T h,T l):head(h),low(l){cout<<"有参构造"<<endl;}~stu(){cout<<"析构函数"<<end…

基于深度学习网络的烟雾检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .........................................................................% 预处理训练数…

2023-9-14 最长上升子序列

题目链接&#xff1a;最长上升子序列 #include <iostream> #include <algorithm>using namespace std;const int N 1010;int n; int a[N]; int f[N];int main() {cin >> n;for(int i 1; i < n; i ) cin >> a[i];for(int i 1; i < n; i ){f[i]…

VS报错 The build tools for v141 (Platform Toolset = ‘v141‘) cannot be found.

在配置OpenGL 项目的时候遇到了平台不一致的问题 错误 1 error MSB8020: The build tools for v141 (Platform Toolset v141) cannot be found. To build using the v141 build tools, please install v141 build tools. Alternatively, you may upgrade to the current Vis…

汽车电子智能仓储系统的发展趋势与应用探索

现代汽车制造业中的仓储管理一直面临着多种挑战。仓库中物料的数量种类繁多&#xff0c;寻找物料耗时长、困难大。盘点过程耗费人力多、成本高、速度慢。管理无法达到先进先出的原则&#xff0c;也无法进行精准追溯。此外&#xff0c;多发、少发、错料等问题时有发生。仓库中的…

肖sir__mysql之单表__004

mysql之单表 一、建表语句 1、show databases 查看所有的数据库 2、create databaes 数据库名 创建数据库 3、use 数据库名 指定使用数据库 4、show tables &#xff1b; 5、创建表 格式&#xff1a;create table 表名 (字段名1 数据类型1(字符长度),字段名2 数据类型2(字…

怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?

文章目录 序幕概述1. 安装 PHP2. 安装MySQL数据库3. 安装 Wordpress4. 设置您的 WordPress 数据库设置 MySQL/MariaDB创建 WordPress 数据库 5. WordPress configuration6. 将WordPress站点发布到公网安装相对URL插件修改config.php配置 7. 支持好友链接样式8. 定制主题 序幕 …

想要精通算法和SQL的成长之路 - 可以攻击国王的皇后

想要精通算法和SQL的成长之路 - 可以攻击国王的皇后 前言一. 可以攻击国王的皇后 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 可以攻击国王的皇后 原题链接 这个题目其实并没有涉及到什么很难的算法&#xff0c;其实就是一个简单的遍历题目。核心思想&#xff1a; 以…

不知道有用没用的Api

encodeURIComponent(https://www.baidu.com/?name啊啊啊) decodeURIComponent(https%3A%2F%2Fwww.baidu.com%2F%3Fname%3D%E5%95%8A%E5%95%8A%E5%95%8A) encodeURI(https://www.baidu.com/?name啊啊啊) decodeURI(https://www.baidu.com/?name%E5%95%8A%E5%95%8A%E5%95%8A) …

机器学习笔记之最优化理论与方法(八)无约束优化问题——常用求解方法(中)

机器学习笔记之最优化理论与方法——基于无约束优化问题的常用求解方法[中] 引言回顾&#xff1a;最速下降算法的缺陷经典牛顿法基本介绍经典牛顿法的问题经典牛顿法的优点与缺陷经典牛顿法示例 修正牛顿法介绍拟牛顿法拟牛顿法的算法过程 矩阵 B k 1 \mathcal B_{k1} Bk1​的…

【论文解读】Faster sorting algorithm

一、简要介绍 基本的算法&#xff0c;如排序或哈希&#xff0c;在任何一天都被使用数万亿次。随着对计算需求的增长&#xff0c;这些算法的性能变得至关重要。尽管在过去的2年中已经取得了显著的进展&#xff0c;但进一步改进这些现有的算法路线的有效性对人类科学家和计算方法…

Docker的运行机制和底层技术简介

&#xff08;笔记总结自《微服务架构基础》书籍&#xff09; 一、Docker的引擎 Docker Engine&#xff08;Docker引擎&#xff09;是Docker的核心部分&#xff0c;使用的是客户端-服务器&#xff08;C/S&#xff09;架构模式&#xff1a; ①Docker Cli&#xff1a;Docker命令…

Science adv | 转录因子SPIC连接胚胎干细胞中的细胞代谢与表观调控

代谢是生化反应网络的结果&#xff0c;这些反应吸收营养物质并对其进行处理&#xff0c;以满足细胞的需求&#xff0c;包括能量产生和生物合成。反应的中间体被用作各种表观基因组修饰酶的底物和辅助因子&#xff0c;因此代谢与表观遗传密切相关。代谢结合表观遗传涉及疾病&…

高可用集群HA、LVS+Keepalived、健康检测

keepalived是集群管理中保证集群高可用(HA)的一个服务软件&#xff0c;其功能类似于heartbeat&#xff0c;用来防止单点故障。 2.工作原理 keepalived是以VRRP协议为实现基础的,当backup收不到vrrp包时就认为master宕掉了&#xff0c;这时就需要根据VRRP的优先级来选举一个ba…