首页 > 编程语言 >C++ STL queue 的实现

C++ STL queue 的实现

时间:2024-10-24 18:48:16浏览次数:8  
标签:node head STL C++ queue tail len NULL ptr

求点赞,求关注,求评论
求点赞,求关注,求评论
求点赞,求关注,求评论
求点赞,求关注,求评论
求点赞,求关注,求评论
求点赞,求关注,求评论
求点赞,求关注,求评论
这篇文章很短,直接给代码:

#include <iostream>
using namespace std;
template <class T>class Queue {
protected:
	struct node {
		T data;
		node *next;
	};
	node *head;
	node *tail;
	size_t len;
public:
	Queue() {
		head = NULL;
		tail = NULL;
		len = 0;
	}
	~Queue() {
		node *ptr = NULL;
		while(head != NULL) {
			ptr = head->next;
			delete head;
			head = ptr;
		}
	}
	void push(T var) {
		node *ptr = new node;
		ptr->data = var;
		ptr->next = NULL;
		if(tail != NULL) {
			tail->next = ptr;
		}
		else {
			head = ptr;
		}
		tail = ptr;
		len++;
	}
	void pop() {
		if (len <= 0) {
			abort();
		}
		node *ptr = head->next;
		delete head;
		head = ptr;
		if(head == NULL) {
			tail = NULL;
		}
		len--;
	}
	T front() {
		return head->data;
	}
	T back() {
		return tail->data;
	}
	bool empty() {
		return head == NULL && tail == NULL;
	}
	size_t size() {
		return len;
	}
	void clear() {
		while (len > 0) {
			pop();
		}
	}
};

标签:node,head,STL,C++,queue,tail,len,NULL,ptr
From: https://blog.csdn.net/j5486545648564/article/details/143216732

相关文章

  • C++学习路线(二十二)
    构造函数构造函数作用在创建一个新的对象时,自动调用的函数,用来进行“初始化”工作:对这个对象内部的数据成员进行初始化。构造函数特点1.自动调用(在创建新对象时,自动调用)2.构造函数的函数名,和类名相同3.构造函数没有返回类型4.可以有多个构造函数(即函数重载形式)构......
  • 计算机毕业设计项目推荐:大学生实习成绩评价系统的设计与实现38147(开题答辩+程序定制+
    摘 要21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。论文主要是对大学生实习成绩......
  • 【C++】红黑树万字详解(一文彻底搞懂红黑树的底层逻辑)
    目录00.引入01.红黑树的性质02.红黑树的定义03.红黑树的插入1.按照二叉搜索树的规则插入新节点2.检测新节点插入后,是否满足红黑树的性质1.uncle节点存在且为红色2.uncle节点不存在3.uncle节点存在且为黑色 04.验证红黑树00.引入和AVL树一样,红黑树也是一种自平......
  • 计算机毕业设计项目推荐,个人知识管理系统 79004(开题答辩+程序定制+全套文案 )上万套实
    摘 要尽管我们每天面临的信息越来越多,信息过载与信息噪音越来越严重,但只要我们能充分利用个人知识管理技能,借助有效的个人知识管理软件相信战胜海量信息不再是困难。本课题在分析了个人知识管理现状以及对现有的个人知识管理网站进行研究比较的基础上,针对网络交流互助的特......
  • C++Socket通讯样例(服务端)
    1.创建Socket实例并开启。privateintOpenTcp(intport,stringip=""){//1.开启服务端try{_tcpServer=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPAddressipAddr=IPAddress.Any;......
  • C++11新特性:lambda表达式
    lambda表达式目录lambda表达式常见lambda表达式的省略式值的捕获lambda表达式的类型使用场景简述附:lambda的常量性......
  • 20个基础到进阶版的OpenCV4.9.0趣味项目(C++版)(八)——石头、剪刀、布识别手势识别(传统方
    20个基础到进阶版的OpenCV4.9.0趣味项目(C++版)(八)——石头、剪刀、布识别手势识别(传统方法)文章目录20个基础到进阶版的OpenCV4.9.0趣味项目(C++版)(八)——石头、剪刀、布识别手势识别(传统方法)一、引言二、核心知识1.YCrCb空间转换和提取1)YCrCb色彩空间:2)分割:2.凸包凸包计算......
  • 大话C++:第23篇 输入输出
    1输入输出概述C++输入输出(I/O)是C++编程语言中非常重要的一部分,它涉及到从外部设备(如键盘、文件等)读取数据以及将数据写入到这些设备中。C++提供了一套丰富的I/O库,程序员可以使用这些库来执行各种输入输出操作。C++的I/O操作主要依赖于<iostream>头文件,它定义了用于输入输出......
  • Qt/C++路径轨迹回放/回放每个点信号/回放结束信号/拿到移动的坐标点经纬度
    一、前言说明在使用百度地图的路书功能中,并没有提供移动的信号以及移动结束的信号,但是很多时候都期望拿到移动的哪里了以及移动结束的信号,以便做出对应的处理,比如结束后需要触发一些对应的操作。经过搜索发现很多人都有这个需求,需要在js文件中加上一点代码才行,也就是在start开始......
  • [C++]在windows基于C++编程署yolov11-pose的openvino姿态估计模型cmake项目部署演示源
    【算法介绍】在Windows系统上,基于C++编程部署YOLOv11-Pose的OpenVINO姿态估计模型,可以通过CMake项目来实现。以下是简要介绍:首先,需要准备开发环境,包括安装OpenVINOToolkit、CMake、OpenCV和C++编译器(如GCC或MSVC)。OpenVINO是英特尔开发的一款用于优化和部署深度学习模型的工具套件......