C++实现有哨兵的双向循环链表
C++实现有哨兵的双向循环链表:
#include<iostream>
#include<stack>
using namespace std;
template<class T>
class Node
{
private:
T data;
Node<T>* next;
public:
Node()
{
Node=NULL;
}
Node(T d)
{
data=d;
next=NULL;
}
};
template<class T>
class myqueue
{
private:
Node<T> *tail;
public:
myqueue()
{
tail=new Node<T>();
//tail->next=NULL;
tail->next=tail; //这种表示采用的是循环队列,且队列头是一个哨兵为空,它的下一个才是队列的第一个数据
}
bool empty()
{
//return (NULL==tail->next)
return (tail->next==tail);
}
void push(T d)
{
Node<T> *p=new Node<T>(d);
//p->next=NULL;
p->next=tail->next;
tail->next=p;
tail=p; //始终标记出尾部的位置
}
T front() //取队列的第一个元素
{
if(empty())
{
cout<<"queue is empty!"<<endl;
exit(0);
}
Node<T> *p=tail->next; //这是一个循环链表构成的队列,尾部的链接的下一个就是队列头
T data=p->next->data; //队列头链接的下一个才是第一个数据
return data;
}
void pop() //队列的第一个元素出队列
{
Node<T> *p=tail->next;
Node<T> *q=p->next;
p->next=q->next;
if(q==tail)
tail=p;
delete q;
q=NULL;
}
};
C++实现有哨兵的双向循环链表相关推荐
- 带有哨兵的双向循环链表
有哨兵的双向循环链表: 双向链表有前驱与后继,循环链表有表尾指向表头,那么带哨兵就是从表头直接指向表尾 即: head.next 为第一个元素 head.next.prev 为最后一个元 ...
- 【数据结构】- 几个步骤教你认识并实现一个链表之带头(哨兵位)双向循环链表(中)
文章目录 前言
- 【数据结构】- 几个步骤教你认识并实现一个链表之带头(哨兵位)双向循环链表(上)
文章目录 前言
- 【数据结构】带头节点双向循环链表
目录 顺序表和链表的区别 带头双向循环链表分析 带头双向循环链表结构: 创建一个节点 哨兵位头节点 打印链表中的值 在pos前插入 删除pos位置的节点 尾插 尾删 头插: 头删 链表元素查找 总代码 ...
- 数据结构-线性表之带头结点的双向循环链表
文章目录 前言 实现 (1)结构定义 (2)基本函数 (3)操作实现 测试 代码 前言 链表的类型有很多种(根据带头或不带头,循环或非循环等等),但是我们重点研究的只有两种,一种结构非常简单是无头单向 ...
- 比特数据结构与算法(第二章收尾)带头双向循环链表的实现
1.链表的分类 链表的分类 ① 单向或者双向 ② 带头或者不带头 ③ 循环或者非循环 常用的链表: 根据上面的分类我们可以细分出8种不同类型的链表,这么多链表我们一个个讲解这并没有意义.我们实际中最常 ...
- 【数据结构】链表:带头双向循环链表的增删查改
本篇要分享的内容是带头双向链表,以下为本片目录 目录 一.链表的所有结构 二.带头双向链表 2.1尾部插入 2.2哨兵位的初始化 2.3头部插入 2.4 打印链表 2.5尾部删除 2.6头部删除 2. ...
- 数据结构-带头双向循环链表(增删查改详解)
在上一篇博客中,详细介绍了单链表的增删查改,虽然单链表的结构简单,但是用起来却不是那么顺手.因此根据单链表的种种缺点,这篇博客所介绍的带头双向循环链表将会带来极大的优化. 上图就是带头双向循环链表的主 ...
- 数据结构:带头双向循环链表——增加、删除、查找、修改,详细解析
读者可以先阅读这一篇:数据结构--单链表的增加.删除.查找.修改,详细解析_昵称就是昵称吧的博客-CSDN博客,可以更好的理解带头双向循环链表. 目录 一.带头双向循环链表的处理和介绍 1.带头双向循 ...
最新文章
- OpenStack云计算快速入门教程
- 【深入Java虚拟机JVM 04】JVM内存溢出OutOfMemoryError异常实例
- 简单网页制作html语言,html基本操作,看了这些你就能做简易网页
- .NET Core 学习资料精选:进阶
- C++对象内存布局--④VS编译器--单个虚拟继承
- Struts2自定义拦截器
- listctrl 使用入门
- (转)Uncaught TypeError: Cannot set property 'innerHTML' of null
- 百度AI城市又搞事情!一天三场签约 上海市民要全面迎来AI了
- Android事件分发机制(一)
- Java虚拟机优化在哪里,锁在Java虚拟机中的实现和优化
- Atitit.java expression fsm 表达式词法分析引擎 v2 qaa.docx
- 全志R311芯片规格书-datasheet资料分享
- 向淘宝学运营:移动MM速长成
- 多目标优化算法之SPEA2
- web狗之xxm实体攻击
- 断点续传的原理(转)
- 一名武大同学的春招48小时
- python中表示分支结构_下面Python关键字中,不用于表示分支结构的是()。
- 【每日新闻】桥水达里奥:人工智能造成贫富差距 | 国产x86处理器开始生产:基于AMD Zen架构...