数据结构之队列_Queue
来源:互联网 发布:微店怎么导入淘宝商品 编辑:程序博客网 时间:2024/05/21 20:27
#ifndef QUEUE_H_INCLUDED
#define QUEUE_H_INCLUDED
#define QUEUE_H_INCLUDED
#include<iostream>
template <class T>
struct Node
{
T data;
Node<T>* next;
Node(const T& item, Node<T>* nxt = NULL) :data(item), next(nxt){}
};
template <class T>
class Queue
{
private:
Node<T>* front;
Node<T>* rear;
int size;
public:
Queue<T>() : size(0), front(NULL), rear(NULL){}
~Queue<T>();
T Front();
void Pop();
void Clear();
void Delete(const T& item);
void Insert(const T& item);
Node<T>* Search(const T& item);
bool Empty(){ return front == NULL; }
int GetSize()const{ return size; }
void Show();
};
template <class T>
Queue<T>::~Queue()
{
Node<T>* p = front;
while (p != NULL)
{
front = p->next;
delete p;
p=front;
}
}
}
template <class T>
void Queue<T>::Insert(const T& item)
{
if (front == NULL)
{
front = rear = new Node<T>(item);
}
else
{
rear->next = new Node<T>(item);
rear = rear->next;
}
size++;
}
template <class T>
void Queue<T>::Pop()
{
if (Empty())
{
std::cout << "队列已空";
return;
}
void Queue<T>::Pop()
{
if (Empty())
{
std::cout << "队列已空";
return;
}
size--;//肯定存在此节点
Node<T>* p = front;
front = front->next;
delete p;
Node<T>* p = front;
front = front->next;
delete p;
}
template <class T>
T Queue<T>::Front()
{
return front->data;
}
template <class T>
Node<T>* Queue<T>::Search(const T& item)
{
Node<T>* p = front;
while (p != NULL)
{
if (p->data = item)
return p;
p = p->next;
}
return NULL;
}
T Queue<T>::Front()
{
return front->data;
}
template <class T>
Node<T>* Queue<T>::Search(const T& item)
{
Node<T>* p = front;
while (p != NULL)
{
if (p->data = item)
return p;
p = p->next;
}
return NULL;
}
template <class T>
void Queue<T>::Delete(const T& item)
{
Node<T>* p = Search(item);
if (p == NULL)
{
std::cout << "无此节点";
return;
}
size--;//肯定存在此节点
Node<T>* q = front;
if (p == q)
{
front = p->next;
delete p;
return;
}
Node<T>* q = front;
if (p == q)
{
front = p->next;
delete p;
return;
}
while (q->next != p)
q = q->next;
q = q->next;
q->next = p->next;
delete p;
delete p;
}
template <class T>
void Queue<T>::Clear()
{
Node<T>* p = front;
while (p != NULL)
{
front = p->next;
delete p;
p=front;
void Queue<T>::Clear()
{
Node<T>* p = front;
while (p != NULL)
{
front = p->next;
delete p;
p=front;
}
front = rear = NULL;
front = rear = NULL;
}
template <class T>
void Queue<T>::Show()
{
Node<T>* p = head;
while (p != NULL)
{
std::cout << p->data << " ";
p = p->next;
}
}
#endif
void Queue<T>::Show()
{
Node<T>* p = head;
while (p != NULL)
{
std::cout << p->data << " ";
p = p->next;
}
}
#endif
1 0
- 数据结构之队列_Queue
- C++数据结构 之 队列_Queue
- 【数据结构】顺序队列_Queue
- 队列_QUEUE
- 大话数据结构 code 第四章 05顺序队列_Queue
- 循环队列_queue
- 数据结构之队列(链式队列)
- 数据结构之队列(数组队列)
- 数据结构之队列-顺序队列
- 数据结构之循环队列
- 数据结构之顺序队列
- 数据结构之链队列
- java数据结构之队列
- 数据结构之队列
- 数据结构复习之【队列】
- 内核数据结构之队列
- 数据结构之队列实例
- 数据结构学习之队列
- JQuery学习总结
- URL的组成
- LRU Cache
- 设计模式 - 创建型模式 - 工厂模式
- 阿里巴巴集团去IOE运动的思考与总结
- 数据结构之队列_Queue
- 《奔跑吧,兄弟》之王祖蓝的"钥匙配箱子"概率统计问题--->>回眸
- 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为1
- UIApplication, AppDelegate, UIViewController, UIWindow四大对象关系
- iOS求职:OC面试题
- FJNU OJ 1054黄黄的计算器II
- CityEngine CGA语法之单坡式屋顶函数 roofShed
- 深度学习目前进展和理解
- ajax-瀑布流效果