c++实现栈和队列类

c++实现栈和队列类

  • 栈(Stack)
    • Stack示意图
    • Stack.cpp
  • 队列(queue)
    • queue 示意图
    • queue.cpp

栈(Stack)

Stack示意图

在这里插入图片描述

Stack.cpp

#pragma once
#include "ListStu.cpp"

template<typename T>
class Stack
{
public:
/* 
	* void push(T& tDate)
	* 参数一 : T& 用户数据
	* 功能   :往链表的头部压入一个数据
	* 返回值 :无
*/
	void push(const T& tDate);

/*
	* void pop()
	* 参数一 : 无
	* 功能   :往链表的头部弹出一个数据,删除头数据
	* 返回值 :无
*/
	void pop();

/*
	* void GetTopDate()
	* 参数一 : 无
	* 功能   :获取栈顶数据
	* 返回值 :T&
*/
	T& GetTopDate();

/*
	* int GetCount()
	* 参数一 : 无
	* 功能   :获取栈的元素个数
	* 返回值 :int
*/
	int GetCount();

private:
	ListStu<T> m_Stack;//栈双向链表指针
};

template<typename T>
void Stack<T>::push(const T& tDate)
{
	m_Stack.HeadInsert(tDate);
}

template<typename T>
void Stack<T>::pop()
{
	m_Stack.DeleteHead();
}

template<typename T>
T& Stack<T>::GetTopDate()
{
	return *(m_Stack.begin());
}

template<typename T>
int Stack<T>::GetCount()
{
	return m_Stack.Size();
}

队列(queue)

queue 示意图

在这里插入图片描述

queue.cpp

#pragma once
#include "ListStu.cpp"
template<typename T>
class Queue
{
public:
	/*
	* void push(T& tDate)
	* 参数一 : T& 用户数据
	* 功能   :往链表的尾部压入一个数据
	* 返回值 :无
*/
	void push(const T& tDate);

	/*
		* void pop()
		* 参数一 : 无
		* 功能   :往链表的头部弹出一个数据,删除头数据
		* 返回值 :无
	*/
	void pop();

	/*
		* void GetTopDate()
		* 参数一 : 无
		* 功能   :获取栈顶数据
		* 返回值 :T&
	*/
	T& GetTopDate();

	/*
		* int GetCount()
		* 参数一 : 无
		* 功能   :获取栈的元素个数
		* 返回值 :int
	*/
	int GetCount();


private:
	ListStu<T> m_Queue;//队列双向链表,排队:后进后出原则--push尾部插入,pop 头先出
};


template<typename T>
void Queue<T>::push(const T& tDate)
{
	m_Queue.VailInsert(tDate);
}

template<typename T>
void Queue<T>::pop()
{
	m_Queue.DeleteHead();
}

template<typename T>
T& Queue<T>::GetTopDate()
{
	return *(m_Queue.begin());
}

template<typename T>
int Queue<T>::GetCount()
{
	return m_Queue.Size();
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux从青铜到王者】 基础IO

本篇重点&#xff1a;文件描述符&#xff0c;重定向&#xff0c;缓冲区&#xff0c;磁盘结构&#xff0c;文件系统&#xff0c;inode理解文件的增删查改&#xff0c;查找一个文件为什么一定要有路径&#xff0c;动静态库&#xff0c;有的时候为什么找不到库&#xff0c;动态库的…

SQL面试题及答案

介绍 在快节奏的数据管理和信息技术世界中,导航和操作结构化数据的能力是一项非常重要的技能。SQL,即结构化查询语言,是关系数据库的基石,掌握这种语言的专业人员的需求量很大。SQL 面试在科技行业很常见,潜在的候选人会接受测试以展示他们的知识和解决问题的能力。为了帮…

酷开科技丨新年新玩法!酷开系统壁纸模式给客厅“换”新

甲辰龙年即将到来&#xff0c;新年新家新气象&#xff0c;快到酷开系统壁纸模式中挑选一款喜欢的壁纸&#xff0c;为新的一年增添一份美好和喜悦吧&#xff01; 酷开科技将更多的电视新玩法带给你&#xff0c;让你的电视成为家庭中的焦点&#xff01;酷开系统壁纸模式&#xf…

【前端素材】推荐优质后台管理系统APP Zina平台模板(附源码)

一、需求分析 当我们从多个层次来详细分析后台管理系统时&#xff0c;可以将其功能和定义进一步细分&#xff0c;以便更好地理解其在不同方面的作用和实际运作。 1. 功能层次 a. 用户管理功能&#xff1a; 用户注册和登录&#xff1a;管理用户账户的注册和登录过程。权限管…

easyui 手风琴Accordion 面板的高度设置

今天接到一个新的小需求&#xff0c;如下图&#xff0c;当预算表单只有一个时&#xff0c;要求不显示预算表单这块的内容。 考虑到页面创建时用到了表单的回调和点击方法&#xff0c;所以不能单纯的移除&#xff0c;移除右侧表格的创建会报错&#xff0c;所以只能隐藏。 隐藏…

突破挑战:利用沃尔玛跨境智星实现批量注册与下单

在进行沃尔玛测评时&#xff0c;确保环境安全至关重要。每个账号都应使用独立的运行环境&#xff0c;这样可以避免浏览器指纹、字体以及浏览器数据之间的关联问题。此外&#xff0c;账号的资料也需要特别注意。最好是自己注册自己下单&#xff0c;这样可以确保所有资源都掌握在…

JAVA工程师面试专题-并发编程篇

目录 一、线程 1、并发与并行的区别 2、同步和异步的区别 3、Java中创建线程有哪些方式? 4、Thread和Runnable的区别 5、Java中的Runnable、Callable、Future、FutureTask的区别和联系&#xff1f; 6、说一下你对 CompletableFuture 的理解 7、volatile关键字有什么用&…

如何下载 VisualStudio2022 离线包

1.概要&#xff0c;有些场景下&#xff0c;不允许联网&#xff0c;需要下载离线安装包。 2.过程 2.1 下载地址 创建基于网络的安装 - Visual Studio (Windows) | Microsoft Learn 2.2 选择引导程序 2.3 执行命令 2.3.1 下载全部&#xff1a; vs_Enterprise.exe --layout …

芯科科技与Arduino携手推动Matter普及化

双方的合作可助力开发人员在两分钟内将新开发板配置入网 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;日前宣布&#xff0c;公司与开源硬件和软件领域的…

如何判断领导是在培养你,还是在压榨你?

在职场中&#xff0c;判断领导的真实意图并非易事。有时&#xff0c;他们的行为可能让人困惑&#xff0c;不清楚他们是在真心培养你&#xff0c;还是在过度压榨你。 在职场提高工作效率&#xff0c;我们可以使用进度猫这样的项目管理工具来管理任务。通过使用进度猫甘特图&am…

【linux进程间通信(二)】共享内存详解以及进程互斥概念

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; 进程间通信 1. 前言2. 共享内…

2024高效神器:思维导图,让你的思维飞翔!

在信息爆炸的时代&#xff0c;如何高效地处理、整合和记忆海量信息成为了摆在我们面前的一大挑战。而在这个关键时刻&#xff0c;思维导图凭借其独特的优势&#xff0c;正逐渐成为2024年最受欢迎的高效神器。那么&#xff0c;思维导图究竟有何魅力&#xff0c;能够助我们一臂之…

【Linux进程】冯·诺依曼体系结构以及操作系统的深入理解

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.冯诺依曼体系结构特…

igolang学习2,golang开发配置国内镜像

go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct

问题1-spring-boot版本和org.springframework的spring-web兼容的版本

报错问题如下&#xff1a; Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.createHandlerMethod(AbstractHandlerMeth…

全国均薪20.7W!PMP持证者越来越吃香了!

摘要&#xff1a;现如今&#xff0c;PMP已成为全球公认的项目管理专业资格认证之一&#xff0c;得到许多国家专业人士的认可。在我国&#xff0c;项目经理的平均年薪达到了20.7w&#xff01; PMP最早是由PMI发起&#xff0c;已成为全球公认的项目管理专业资格认证之一&#xff…

音视频技术-电脑连接调音台时交流声的产生与消除

当电脑(笔记本/台式机)声卡通过音频线与调音台(或扩音机)连接时,能听到“交流声”。有时很轻微,有时很明显,甚至干扰正常的演讲或发言。 很多时候,我们在台上演讲时,都会使用电脑播放PPT,遇到视频时,还需要将视频中的音频扩大。电脑音频的输出口一般都是3.5的,我们…

Curfew e-Pass 管理系统存在Sql注入漏洞 附源代码

免责声明&#xff1a;本文所涉及的信息安全技术知识仅供参考和学习之用&#xff0c;并不构成任何明示或暗示的保证。读者在使用本文提供的信息时&#xff0c;应自行判断其适用性&#xff0c;并承担由此产生的一切风险和责任。本文作者对于读者基于本文内容所做出的任何行为或决…

【Git工具实战】实用真实 Git 开发工作流程

前言 最近工作中发现&#xff0c;很多开发人员连最基本的Git怎么使用都不知道&#xff0c;比如什么时候切分支&#xff0c;什么时候合并代码&#xff0c;代码遇到冲突怎么办&#xff0c;经常出现掉代码&#xff0c;代码合并后丢失的情况。以下为个人总结的常规Git开发工作流程…

linux系统消息中间件rabbitmq普通集群的部署

rabbitmq普通集群的部署 普通集群准备环境查询版本对应安装rabbitmq软件启动创建登录用户开启用户远程登录查看端口 部署集群创建数据存放目录和日志存放目录:拷⻉erlang.cookie将其他两台服务器作为节点加⼊节点集群中查看集群状态创建新的队列 普通集群准备环境 配置hosts⽂件…