[C++]链队的实现
时间:2019-01-10
本文章向大家介绍[C++]链队的实现,主要包括[C++]链队的实现使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
template <typename ElemType>
class Queue {
public:
Queue() {
FrontPointer = RearPointer = new QueueNode; //加入头结点以便于操作
FrontPointer->next = NULL; //头结点指针域初始化为NULL
}
void push(const ElemType Val) { //元素入队
QueueNode *p = new QueueNode; p->data = Val; p->next = NULL;
RearPointer->next = p; RearPointer = p;
}
void pop() { //元素出队
if (FrontPointer == RearPointer) exit(-1);
QueueNode *p = FrontPointer->next;
FrontPointer->next = p->next;
if (RearPointer == p) RearPointer = FrontPointer;
delete p;
}
ElemType &front() { //返回头部元素
if (FrontPointer == RearPointer) exit(-1);
return FrontPointer->next->data;
}
const ElemType &front() const {
if (FrontPointer == RearPointer) exit(-1);
return FrontPointer->next->data;
}
ElemType &back() { //返回尾部元素
if (FrontPointer == RearPointer) exit(-1);
return RearPointer->data;
}
const ElemType &back() const {
if (FrontPointer == RearPointer) exit(-1);
return RearPointer->data;
}
int size() { //返回链队中的元素个数
QueueNode *p = FrontPointer; int count = 0;
while (p->next != NULL) {
p = p->next; ++count;
}
return count;
}
bool empty() { //判断链队是否为空
return (FrontPointer == RearPointer) ? true : false;
}
void clear() { //销毁链队
while (FrontPointer != NULL) {
RearPointer = FrontPointer->next;
delete FrontPointer;
FrontPointer = RearPointer;
}
}
private:
struct QueueNode {
typedef QueueNode *QueueNodePointer;
ElemType data;
QueueNodePointer next;
};
QueueNode *FrontPointer, *RearPointer; //头指针与尾指针
};
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Day60:把二叉树打印成多行
- Day61:序列化二叉树
- 如何发一条九宫格图片的朋友圈
- 神器!人工智能分离歌曲中的人声和背景音乐
- Python自学成才之路 分布式计算解决方案actor
- MySQL代码开发和调试利器CLion
- 重磅!GitHub 推出容器镜像仓库服务!
- 深入理解 Cilium 的 eBPF 收发包路径
- CentOS7下搭建Jellyfin个人流媒体服务器
- CentOS8下yum源配置及nmcli命令简单介绍
- Day62:二叉搜索树的第k个结点
- CentOS7下利用SRS搭建直播流媒体服务器
- 第9天:NLP补充——需要的基本知识
- 6.AVCodecContext和AVCodec
- WebAssembly之使用JS调用C/C++接口