当前位置: 首页 > news >正文

DAY48

 

#ifndef QUEUE_H
#define QUEUE_H#include<iostream>using namespace  std;#define MAX 10typedef int datatype;template <typename T>
class queue
{T data[MAX];T front;T tail;public:queue();~queue();queue(const T &other);//创建循环队列T *queue_create();//判空int queue_empty(queue *q);//判满int queue_full(queue *q);//入队int queue_push(queue *q,T e);//遍历void queue_show(queue *q);//出队int queue_pop(queue *q);//求队列的长度int queue_size(queue *q);//销毁void queue_free(queue *q);};#endif // QUEUE_H
#include"queue.h"template <typename T>
queue<T>::queue()
{cout << "queue:无参构造" << endl;
}template <typename T>
queue<T>::~queue()
{cout << "queue::析构函数" << this << endl;
}template <typename T>
queue<T>::queue(const T &other):front(other.front),tail(other.tail)
{cout << "拷贝构造函数" << endl;
}//创建循环队列
template <typename T>
T *queue<T>::queue_create()
{queue * q = (queue *)malloc(sizeof(queue));if(NULL == q){printf("创建失败\n");return NULL;}q -> front = q -> tail = 0;printf("创建成功\n");return q;
}//判空
template <typename T>
int queue<T>::queue_empty(queue * q)
{if(NULL == q){printf("队列错误\n");return 0;}return q -> front == q -> tail;
}//判满
template <typename T>
int queue<T>::queue_full(queue *q)
{if(NULL == q){printf("队列错误\n");return 0;}return (q -> tail + 1) % MAX == q -> front;
}//入队
template <typename T>
int queue<T>::queue_push(queue *q,T e)
{if(NULL == q){printf("入队失败\n");return 0;}q -> data[q -> tail] = e;q -> tail = (q ->tail + 1) % MAX;printf("入队成功\n");return 1;
}//遍历
template <typename T>
void queue<T>::queue_show(queue *q)
{if(NULL == q || queue_empty(q)){printf("遍历失败\n");return;}printf("从队头到队尾元素分别是: ");for(int i = q -> front; i != q -> tail; i = (i + 1) % MAX){printf("%d\t",q -> data[i]);}printf("\n");
}//出队
template <typename T>
int queue<T>::queue_pop(queue * q)
{if(NULL == q){printf("出队失败\n");return 0;}cout << "出队的元素是: ";printf("%d\n",q -> data[q -> front]);q -> front = (q -> front + 1) % MAX;return 1;
}//求队列的长度
template <typename T>
int queue<T>::queue_size(queue * q)
{if(NULL == q){printf("不合法\n");return 0;}return (q -> tail + MAX - q -> front) % MAX;
}//销毁
template <typename T>
void queue<T>::queue_free(queue * q)
{if(NULL == q){printf("销毁失败\n");return ;}free(q);q = NULL;printf("释放成功\n");return ;
}
#include "queue.h"using namespace std;template <typename T>
int main()
{queue<T> u;queue<T> *q = u.queue_create();if(NULL == q){return -1;}//入队u.queue_push(q,"aafa");u.queue_push(q,9);u.queue_push(q,3);u.queue_push(q,7);u.queue_push(q,4);u.queue_push(q,1);u.queue_show(q);//出队u.queue_pop(q);u.queue_show(q);//求队列大小u.queue_size(q);//清空且销毁u.queue_free(q);return 0;
}

#ifndef STACK_H
#define STACK_H#include <iostream>
#include <cstring>using namespace std;typedef int datatype;template <typename T>
class stack
{T * data;T top;public:stack();~stack();stack(const T &other);//创建栈T *Stack_create();//判空T Stack_empty(T *s);//判满T Stack_full(T *s);//入栈T Stack_push(T *s,T e);//遍历栈T Stack_show(T *s);//出栈T Stack_pop(T *s);//获取栈顶元素T * Stack_top(T *s);//求栈的大小T Stack_size(T *s);//销毁栈T Stack_free(T *s);};#endif // STACK_H
#include"stack.h"template <typename T>
stack<T>::stack():data(new T(111))
{cout << "stack::无参构造" << endl;
}template <typename T>
stack<T>::~stack()
{delete data;cout << "stack::析构函数:" << this << endl;
}//创建栈
template <typename T>
T * stack<T>::Stack_create()
{stack * s = (stack *)malloc(sizeof(stack));if(NULL == s){cout << "申请失败" << endl;return NULL;}s -> data = (datatype *)malloc(sizeof(datatype) * 10);if(NULL == s -> data){cout << "申请失败" << endl;free(s);return NULL;}s -> top = -1;printf("创建成功\n");return s;}//判空
template <typename T>
T stack<T>::Stack_empty(T *s)
{if(NULL == s){printf("栈不合法\n");return 0;}return s -> top == -1;}//判满
template <typename T>
T stack<T>::Stack_full(T *s)
{if(NULL == s){printf("栈不合法\n");return 0;}return s -> top == 10 - 1;}//入栈
template <typename T>
T stack<T>::Stack_push(T * s,T e)
{if(NULL == s || Stack_full(s)){printf("入栈失败\n");return 0;}s -> top++;s -> data[s -> top] = e;printf("入栈成功\n");return 1;}//遍历栈
template <typename T>
T stack<T>::Stack_show(T *s)
{if(NULL == s || Stack_empty(s)){printf("遍历失败\n");return ;}printf("从栈顶到栈底的元素分别是: \n");for(int i = s -> top; i >= 0; i--){printf("%d\t",s -> data[i]);}printf("\n");}//出栈
template <typename T>
T stack<T>::Stack_pop(T * s)
{if(NULL == s || Stack_empty(s)){printf("出栈失败\n");return 0;}datatype e = s -> data[s -> top];printf("%d",e);s -> top--;return 1;}//获取栈顶元素
template <typename T>
T * stack<T>::Stack_top(T *s)
{if(NULL == s || Stack_empty(s)){printf("获取失败\n");return NULL;}return &s -> data[s -> top];}//求栈的大小
template <typename T>
T stack<T>::Stack_size(T *s)
{if(NULL == s){printf("求取失败\n");return 0;}return s -> top + 1;}//销毁栈
template <typename T>
T stack<T>::Stack_free(T *s)
{if(NULL == s){printf("不合法\n");return;}free(s -> data);s -> data = NULL;free(s);s = NULL;printf("释放成功\n");return ;}
#include"stack.h"template <typename T>
int  main()
{stack<T> k;T *s = k.Stack_create();if(NULL == s){return -1;}datatype e;//入栈cout << "请输入一位栈底元素: ";cin >> e;k.Stack_push(s,e);k.Stack_push(s,2);k.Stack_push(s,5);k.Stack_push(s,6);k.Stack_push(s,4);k.Stack_push(s,8);//遍历栈k.Stack_show(s);//出栈k.Stack_pop(s);k.Stack_show(s);//求栈顶元素k.Stack_top(s);//求栈的大小k.Stack_size(s);//清空栈且销毁k.Stack_free(s);s = NULL;return 0;
}

相关文章:

DAY48

#ifndef QUEUE_H #define QUEUE_H#include<iostream>using namespace std;#define MAX 10typedef int datatype;template <typename T> class queue {T data[MAX];T front;T tail;public:queue();~queue();queue(const T &other);//创建循环队列T *queue_crea…...

光栅和矢量图像处理:Graphics Mill 11.4.1 Crack

Graphics Mill 是适用于 .NET 和 ASP.NET 开发人员的最强大的成像工具集。它允许用户轻松向 .NET 应用程序添加复杂的光栅和矢量图像处理功能。 光栅图形 加载和保存 JPEG、PNG 和另外 8 种图像格式 调整大小、裁剪、自动修复、色度键和 30 多种其他图像操作 可处理任何尺寸&am…...

vue3中组件没有被调用,没进去也没报错

在父页面引用了一个组件&#xff0c;然后父级调用子组件方法&#xff0c;但是根本没进去&#xff0c;也不报错 父级页面挂载组件 <!-- 视频插件组件 --> <div><VideoPluginView ref"video_perview_ref"></VideoPluginView> </div> …...

Postgresql中ParamListInfoData的作用

ParamListInfoData是参数的统一抽象&#xff0c;例如 在pl中执行raise notice %, n;n的值会拼成select n到SQL层取值&#xff0c;但值在哪呢&#xff0c;还是在pl层。对sql层来说&#xff0c;n的一种可能性是参数&#xff0c;在这种可能性中&#xff0c;n的数据放在ParamListI…...

《计算机视觉中的多视图几何》笔记(1)

1 Introduction – a Tour of Multiple View Geometry 本章介绍了本书的主要思想。 1.1 Introduction – the ubiquitous projective geometry 为了了解为什么我们需要射影几何&#xff0c;我们从熟悉的欧几里得几何开始。 欧几里得几何在二维中认为平行线是不会相交的&…...

YOLO目标检测——火焰检测数据集+已标注xml和txt格式标签下载分享

实际项目应用&#xff1a;火灾预警系统、智能监控系统、工业安全管理、森林火灾监测以及城市规划和消防设计等应用场景中具有广泛的应用潜力&#xff0c;可以提高火灾检测的准确性和效率&#xff0c;保障人员和财产的安全。数据集说明&#xff1a;YOLO火焰目标检测数据集&#…...

tkinter四大按钮:Button,Checkbutton, Radiobutton, Menubutton

文章目录 四大按钮Button连击MenubuttonCheckbuttonRadiobutton tkinter系列&#xff1a; GUI初步&#x1f48e;布局&#x1f48e;绑定变量&#x1f48e;绑定事件&#x1f48e;消息框&#x1f48e;文件对话框控件样式扫雷小游戏&#x1f48e;强行表白神器 四大按钮 tkinter中…...

Sudowrite:基于人工智能的AI写作文章生成工具

【 产品介绍】 名称 Sudowrite 成立/上线时间 2023年 具体描述 Sudowrite是一个基于GPT-3的人工智能写作工具&#xff0c;可以帮助你快速生成高质量的文本内容&#xff0c; 无论是小说、博客、营销文案还是学术论文。 Sudowrite可以根据你的输入和指…...

加密狗软件有什么作用?

加密狗软件是一种用于加密和保护计算机软件和数据的安全设备。它通常是一个硬件设备&#xff0c;可以通过USB接口连接到计算机上。加密狗软件的作用主要体现在以下几个方面&#xff1a; 软件保护&#xff1a;加密狗软件可以对软件进行加密和授权&#xff0c;防止未经授权的用户…...

嵌入式Linux驱动开发(I2C专题)(二)

I2C系统的重要结构体 参考资料&#xff1a; Linux驱动程序: drivers/i2c/i2c-dev.cI2CTools: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ 1. I2C硬件框架 2. I2C传输协议 3. Linux软件框架 4. 重要结构体 使用一句话概括I2C传输&#xff1a;APP通过I2…...

SMT贴片制造:发挥的作用和价值]

SMT贴片制造作为一项重要的电子制造技术&#xff0c;发挥着举足轻重的作用&#xff0c;并提供了巨大的价值。 首先&#xff0c;SMT贴片制造为电子产品的制造商提供了高效、准确和可靠的生产方式。相比于传统的手工焊接&#xff0c;SMT贴片制造具有更高的自动化和智能化程度&am…...

蓝桥杯官网练习题(幸运数字)

问题描述 小蓝认为如果一个数含有偶数个数位&#xff0c;并且前面一半的数位之和等于后面一半的数位之和&#xff0c;则这个数是他的幸运数字。例如 2314 是一个幸运数字, 因为它有 4 个数位, 并且 2314 。现在请你帮他计算从 1 至 100000000 之间共有多少个不同的幸运数字。 …...

pandas笔记:显示中间的省略号

比如我们有这样一个数据&#xff08;Geolife中的数据&#xff09; 如何把中间的省略号完整地输出呢&#xff1f; pd.set_option(display.max_rows, None) data...

解决vagrant安装的centos7,在window主机重装系统过后,再次用vagrant启动centos7却无法启动

场景&#xff1a; vagrant安装的centos7&#xff0c;在window主机重装系统过后&#xff0c;再次用vagrant启动centos7却无法启动 检查 VirtualBox 版本&#xff1a;确保你安装的 VirtualBox 版本与 Vagrant 兼容。如果你更新了 VirtualBox&#xff0c;可能需要同时更新 Vagran…...

嵌入式这个领域会变得过于内卷吗?

今日话题&#xff0c;嵌入式这个领域会变得过于内卷吗&#xff1f;嵌入式开发主要服务于第二产业&#xff0c;尤其是制造业&#xff0c;包括电器、电气、机械、汽车、装备、航空航天等行业的“智能制造”部门&#xff0c;稳定性较强&#xff0c;不像互联网行业那样波动大。因此…...

Linux下安装和使用MySQL的详细教程

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

【Linux】多线程互斥与同步

文章目录 一、线程互斥1. 线程互斥的引出2. 互斥量3. 互斥锁的实现原理 二、可重入和线程安全三、线程和互斥锁的封装1. 线程封装1. 互斥锁封装 四、死锁1. 死锁的概念2. 死锁的四个必要条件3. 避免死锁 五、线程同步1. 线程同步的理解2. 条件变量 一、线程互斥 1. 线程互斥的…...

从零开始:云服务器构建网站的完全指南

目录 一、服务器 二、部署项目 三、购买域名 顶级域名 二级域名 子域名 主机名 四、域名解析 一、服务器 国内华为云、阿里云、腾讯云等看你的选择&#xff1b; 可以选择Linux&#xff1a;CentOS、Ubuntu这些系统版本&#xff0c;更稳定&#xff1b; 服务器控制台&a…...

idea中的debug界面上没有进入方法的红色按钮

问题描述&#xff1a; 这里缺少进入系统方法的红色按钮。 问题解决方法&#xff1a; 在上面图片红框范围内右键点击进入。 点击号 搜索 ‘force’ 添加即可完成 上下拖动即可调整界面按钮顺序...

JavaScript知识系列(4)每天10个小知识点

目录 系列文章目录JavaScript知识系列&#xff08;1&#xff09;每天10个小知识点JavaScript知识系列&#xff08;2&#xff09;每天10个小知识点JavaScript知识系列&#xff08;3&#xff09;每天10个小知识点 知识点**31. Promise** 的概念、作用、原理、特性、优点、缺点、区…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...