当前位置: 首页 > 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** 的概念、作用、原理、特性、优点、缺点、区…...

# 发散创新:基于群体智能的Python蚁群算法优化路径规划实战在人工智能快速演进的时代,**群体智能(Swarm Int

发散创新&#xff1a;基于群体智能的Python蚁群算法优化路径规划实战 在人工智能快速演进的时代&#xff0c;群体智能&#xff08;Swarm Intelligence&#xff09; 作为一类受自然界生物行为启发的计算范式&#xff0c;正逐渐成为解决复杂优化问题的重要工具。本文聚焦于蚁群算…...

Rock3A开发板实战:OpenBMC移植全记录(附避坑指南)

Rock3A开发板OpenBMC移植实战&#xff1a;从硬件适配到性能调优 当RK3568处理器遇上OpenBMC&#xff0c;会碰撞出怎样的火花&#xff1f;作为瑞芯微旗下性能与功耗平衡的明星芯片&#xff0c;RK3568在边缘计算领域已证明其价值。而将其应用于BMC&#xff08;基板管理控制器&…...

纺织抗菌,选对材料才关键

在纺织行业中&#xff0c;抗菌消臭性能是提升产品附加值的核心抓手&#xff0c;其中贴身衣物、家纺等贴身类产品&#xff0c;因长期接触人体或所处环境特性&#xff0c;细菌滋生、异味残留等问题尤为突出。DN128抗菌消臭剂作为高效无机消臭材料&#xff0c;可广泛用作面料及家纺…...

国际大牌入门之选

这些品牌是轻奢饰品界的常青树&#xff0c;设计经典&#xff0c;辨识度高&#xff0c;是很多人的入门首选。卡地亚 27%人推荐猎豹为图腾&#xff0c;工艺精湛&#xff0c;是轻奢界的经典与传奇。宝格丽 24%人推荐跃马徽记是其标志&#xff0c;珠宝设计性感矜贵&#xff0c;灵蛇…...

Onekey:Steam游戏清单管理的自动化解决方案 | 玩家与开发者必备工具

Onekey&#xff1a;Steam游戏清单管理的自动化解决方案 | 玩家与开发者必备工具 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 当独立游戏开发者小林第三次因为手动复制Steam App ID出错而导致…...

Python服务内存持续增长?5个被忽略的__del__陷阱+3种RAII式资源封装模板,今天必须修复!

第一章&#xff1a;Python服务内存持续增长的智能体诊断全景图Python服务在长期运行中出现内存持续增长&#xff0c;是生产环境中高频且隐蔽的稳定性风险。传统人工排查依赖经验与断点调试&#xff0c;难以覆盖异步任务、闭包引用、第三方库缓存等复杂场景。本章构建一个面向可…...

【NR 定位】3GPP NR Positioning 5G定位标准解读(七):RRC_INACTIVE状态下的高效定位机制

1. RRC_INACTIVE状态下的5G定位挑战与机遇 在5G网络中&#xff0c;RRC_INACTIVE状态是一种独特的节能模式&#xff0c;它允许设备在保持部分网络连接的同时大幅降低功耗。这种状态特别适合物联网设备&#xff0c;比如智能电表、资产追踪器和可穿戴设备。想象一下你家的智能门锁…...

AD7606模数转换器的FPGA驱动设计与实现(串行/并行双模式解析)

1. AD7606模数转换器核心特性解析 AD7606这颗16位模数转换芯片在工业现场堪称"数据捕手"&#xff0c;我经手过的电力监控、振动分析项目中都能看到它的身影。与普通ADC不同&#xff0c;它最吸引工程师的特性是双模数据输出——就像高速公路的ETC和人工通道可以并行运…...

10BASE-T1S PLCA参数配置避坑指南:从Node ID重复到Burst Timer设置,这些坑你踩过几个?

10BASE-T1S PLCA参数配置避坑指南&#xff1a;从Node ID重复到Burst Timer设置&#xff0c;这些坑你踩过几个&#xff1f; 在车载以太网的实际部署中&#xff0c;10BASE-T1S因其单对线缆实现多节点通信的特性&#xff0c;正逐渐成为智能座舱和传感器网络的热门选择。但当我们真…...

3步解锁音频自由:NCMDump工具全场景解密指南

3步解锁音频自由&#xff1a;NCMDump工具全场景解密指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 问题&#xff1a;被加密的音乐困境 音乐收藏者的痛点清单 现代音乐爱好者常面临一个共同难题&#xff1a;从音乐平台下载的N…...