模拟实现队列
来源:互联网 发布:淘宝网小饰品批发 编辑:程序博客网 时间:2024/06/05 04:52
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
模拟代码:
#include <iostream>using namespace std;#include <assert.h>template<class T>struct QueueNode{T _Data;QueueNode<T>* _Next;};template<class T> //栈一般用数组实现 ----队列一般用链表实现class Queue{typedef QueueNode<T> Node;public:Queue():_Head(NULL),_Tail(NULL){}void Push(const T& x){if (_Head == NULL){_Head = new Node;_Head->_Data = x;_Tail = _Head;}else {Node* Tmp = new Node;Tmp->_Data = x;Tmp->_Next = NULL;_Tail->_Next = Tmp;_Tail = _Tail->_Next;}}void Pop() //从头删{assert(_Head != NULL);Node* cur = _Head;_Head = _Head->_Next;delete cur;cur = NULL;}bool Empty(){if (_Head == NULL){return true;}return false;}size_t Size(){size_t count = 0;if (_Head == _Tail) //只有一个结点{if (_Head == NULL){return 0;}return 1;}else{Node* cur = _Head;while (cur){count++;cur = cur->_Next;}return count;}}T& front() //返回队头元素{assert(_Head != NULL); return _Head->_Data;}T& Back(){assert(_Tail != NULL);return _Tail->_Data;}private:Node* _Head;Node* _Tail;};void Funtest(){Queue<int> a;a.Push(1);a.Push(2);cout<<a.Size();a.Push(3);a.Push(4);a.Pop();a.Push(5);cout<<a.Size();}
阅读全文
0 0
- 队列的模拟实现
- 模拟实现 队列
- 队列模拟实现
- 模拟实现循环队列
- 模拟实现队列
- 模拟实现队列
- 【C++】模拟实现队列
- MYSQL数据库模拟队列实现
- 利用优先级队列实现事件驱动模拟
- java模拟阻塞队列的实现
- 【c++】模拟实现顺序队列方法一
- 【c++】模拟实现顺序队列方法二
- java 使用线程模拟 队列实现
- 两个栈模拟实现一个队列
- 【C++】优先级队列的模拟实现
- 【算法】用两个栈模拟实现队列
- 栈和队列,以及模拟实现
- (C++)栈和队列的模拟实现
- ERP培训感悟:最好的服务并不是授人以鱼,而是授人以渔
- 33款可用来抓数据的开源爬虫软件工具
- 在51单片机上使用DHT11测温湿度
- 文件名
- word 制作流程图
- 模拟实现队列
- maven打成jar包
- 锁对象——线程学习五
- Android:生成随机数,生成10个随机数,存入sdcard中的随机生成文件中
- Android Architecture Componets
- QT中UDPSocket丢包问题
- jq插件设置浏览器缓存
- com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
- 第一章,java的开发运行环境