队列的链式存储结构 链队列(Linked Queue) C++

简介: 队列的链式存储结构 链队列(Linked Queue) C++

LinkedQueue.h

#ifndef __LINKEDQUEUE_H__
#define __LINKEDQUEUE_H__
template <class T>
class Node
{
public:
  T data;
  Node * next;
};
template <class T>
class LinkedQueue
{
public:
  LinkedQueue();
  ~LinkedQueue();
public:
  void enQueue(T _data);
  T deQueue();
  T getQueue();
  bool Empty();
private:
  Node<T> *front, *rear;
};
#endif


LinkedQueue.cpp

#include "LinkedQueue.h"
template <class T>
LinkedQueue<T>::LinkedQueue()
{
  Node<T> * tempNode = new Node<T>;
  tempNode->next = nullptr;
  front = tempNode;
  rear = tempNode;
}
template <class T>
LinkedQueue<T>::~LinkedQueue()
{
}
template <class T>
void LinkedQueue<T>::enQueue(T _data)
{
  Node<T> *newNode = new Node<T>;
  newNode->data = _data;
  newNode->next = nullptr;
  rear->next = newNode;
  rear = newNode;
}
template <class T>
T LinkedQueue<T>::deQueue()
{
  if (Empty())
  return false;
  T data;
  Node<T> *delNode = new Node<T>;
  for (delNode = front; 
  delNode->next != rear; 
  delNode = delNode->next);
  rear = delNode;
  data = delNode->next->data;
  delete delNode->next;
  return data;
}
template <class T>
T LinkedQueue<T>::getQueue()
{
  if (Empty())
  return false;
  Node<T> *getNode = new Node<T>;
  for (getNode = front;
  getNode->next != rear;
  getNode = getNode->next);
  return getNode->next->data;
}
template <class T>
bool LinkedQueue<T>::Empty()
{
  if (front == rear)
  return true;
  return false;
}


queue.cpp

#include <iostream>
#include "LinkedQueue.h"
#include "LinkedQueue.cpp"
using namespace std;
int main()
{
  LinkedQueue<int> * linQue = new LinkedQueue<int>;
  linQue->enQueue(1);
  linQue->enQueue(2);
  linQue->enQueue(3);
  cout << linQue->deQueue() << endl;
  cout << linQue->getQueue() << endl;
  return 0;
}
相关文章
|
14天前
|
存储 C语言 C++
【C++数据结构——栈与队列】顺序栈的基本运算(头歌实践教学平台习题)【合集】
本关任务:编写一个程序实现顺序栈的基本运算。开始你的任务吧,祝你成功!​ 相关知识 初始化栈 销毁栈 判断栈是否为空 进栈 出栈 取栈顶元素 1.初始化栈 概念:初始化栈是为栈的使用做准备,包括分配内存空间(如果是动态分配)和设置栈的初始状态。栈有顺序栈和链式栈两种常见形式。对于顺序栈,通常需要定义一个数组来存储栈元素,并设置一个变量来记录栈顶位置;对于链式栈,需要定义节点结构,包含数据域和指针域,同时初始化栈顶指针。 示例(顺序栈): 以下是一个简单的顺序栈初始化示例,假设用C语言实现,栈中存储
132 77
|
14天前
|
存储 C++ 索引
【C++数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】
【数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】初始化队列、销毁队列、判断队列是否为空、进队列、出队列等。本关任务:编写一个程序实现环形队列的基本运算。(6)出队列序列:yzopq2*(5)依次进队列元素:opq2*(6)出队列序列:bcdef。(2)依次进队列元素:abc。(5)依次进队列元素:def。(2)依次进队列元素:xyz。开始你的任务吧,祝你成功!(4)出队一个元素a。(4)出队一个元素x。
36 13
【C++数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】
|
14天前
|
存储 C语言 C++
【C++数据结构——栈与队列】链栈的基本运算(头歌实践教学平台习题)【合集】
本关任务:编写一个程序实现链栈的基本运算。开始你的任务吧,祝你成功!​ 相关知识 初始化栈 销毁栈 判断栈是否为空 进栈 出栈 取栈顶元素 初始化栈 概念:初始化栈是为栈的使用做准备,包括分配内存空间(如果是动态分配)和设置栈的初始状态。栈有顺序栈和链式栈两种常见形式。对于顺序栈,通常需要定义一个数组来存储栈元素,并设置一个变量来记录栈顶位置;对于链式栈,需要定义节点结构,包含数据域和指针域,同时初始化栈顶指针。 示例(顺序栈): 以下是一个简单的顺序栈初始化示例,假设用C语言实现,栈中存储整数,最大
38 9
|
14天前
|
C++
【C++数据结构——栈和队列】括号配对(头歌实践教学平台习题)【合集】
【数据结构——栈和队列】括号配对(头歌实践教学平台习题)【合集】(1)遇到左括号:进栈Push()(2)遇到右括号:若栈顶元素为左括号,则出栈Pop();否则返回false。(3)当遍历表达式结束,且栈为空时,则返回true,否则返回false。本关任务:编写一个程序利用栈判断左、右圆括号是否配对。为了完成本关任务,你需要掌握:栈对括号的处理。(1)遇到左括号:进栈Push()开始你的任务吧,祝你成功!测试输入:(()))
30 7
|
2月前
|
缓存 安全 C++
C++无锁队列:解锁多线程编程新境界
【10月更文挑战第27天】
129 7
|
2月前
|
消息中间件 存储 安全
|
2月前
|
存储 设计模式 C++
【C++】优先级队列(容器适配器)
本文介绍了C++ STL中的线性容器及其适配器,包括栈、队列和优先队列的设计与实现。详细解析了`deque`的特点和存储结构,以及如何利用`deque`实现栈、队列和优先队列。通过自定义命名空间和类模板,展示了如何模拟实现这些容器适配器,重点讲解了优先队列的内部机制,如堆的构建与维护方法。
49 0
|
3月前
|
存储 算法 调度
【C++打怪之路Lv11】-- stack、queue和优先级队列
【C++打怪之路Lv11】-- stack、queue和优先级队列
53 1
|
3月前
|
设计模式 存储 C++
C++之stack 和 queue(下)
C++之stack 和 queue(下)
51 1
|
3月前
|
C++ 容器
C++之stack 和 queue(上)
C++之stack 和 queue(上)
91 0

热门文章

最新文章