C++模板实现链式队列
来源:互联网 发布:麦克海尔数据 编辑:程序博客网 时间:2024/05/20 20:58
队列 是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。一般队列的存储结构是顺序存储,当队列的存储结构是链式存储结构时(即队列中每个元素都包含一个指向其后继的指针,最后一个元素指针为null),就是链式队列。
下面我们简单实现一个链式队列:
QueueNode.h
template<typename Type> class LinkQueue;template<typename Type> class QueueNode{private:friend class LinkQueue<Type>;QueueNode(const Type item,QueueNode<Type> *next=NULL):m_data(item),m_pnext(next){}private:Type m_data;QueueNode<Type> *m_pnext;};LinkQueue.h
#include "QueueNode.h"template<typename Type> class LinkQueue{public:LinkQueue():m_prear(NULL),m_pfront(NULL){}~LinkQueue(){MakeEmpty();}void Append(const Type item); //insert dataType Delete(); //delete dataType GetFront(); //get datavoid MakeEmpty(); //make the queue empty void Print(); //print the queuebool IsEmpty() const{return m_pfront==NULL;}private:QueueNode<Type> *m_prear,*m_pfront;};template<typename Type> void LinkQueue<Type>::MakeEmpty(){QueueNode<Type> *pdel;while(m_pfront){pdel=m_pfront;m_pfront=m_pfront->m_pnext;delete pdel;}}template<typename Type> void LinkQueue<Type>::Append(const Type item){if(m_pfront==NULL){m_pfront=m_prear=new QueueNode<Type>(item);}else{m_prear=m_prear->m_pnext=new QueueNode<Type>(item);}}template<typename Type> Type LinkQueue<Type>::Delete(){if(IsEmpty()){cout<<"There is no element!"<<endl;exit(1);}QueueNode<Type> *pdel=m_pfront;Type temp=m_pfront->m_data;m_pfront=m_pfront->m_pnext;delete pdel;return temp;}template<typename Type> Type LinkQueue<Type>::GetFront(){if(IsEmpty()){cout<<"There is no element!"<<endl;exit(1);}return m_pfront->m_data;}template<typename Type> void LinkQueue<Type>::Print(){QueueNode<Type> *pmove=m_pfront;cout<<"front";while(pmove){cout<<"--->"<<pmove->m_data;pmove=pmove->m_pnext;}cout<<"--->rear"<<endl<<endl<<endl;}Main.cpp
#include <iostream>using namespace std;#include "LinkQueue.h"int main(){LinkQueue<int> queue;int init[10]={1,3,6,8,9,2,0,5,4,7};for(int i=0;i<10;i++){queue.Append(init[i]);}queue.Print();queue.Delete();queue.Print();cout<<queue.GetFront()<<endl;queue.Print();queue.MakeEmpty();queue.Print();queue.Delete();return 0;}
阅读全文
0 0
- C实现链式队列
- C链式队列实现
- C++模板实现链式队列
- C语言实现链式队列
- C链式队列的实现
- C语言实现链式队列
- 链式队列(C实现)
- c语言实现链式队列
- 队列(链式存储)C++模板实现
- [数据结构]队列之链式队列的类模板实现
- 数据结构的C实现_链式队列
- 数据结构实现链式队列(C语言)
- C/C++ 堆栈、队列的链式实现
- C语言实现一个链式队列
- 队列的链式结构C语言实现
- 数据结构之---C语言实现链式队列
- 链式队列的实现(c++)
- 队列的链式实现(C语言)
- 排序算法之 堆排序 及其时间复杂度和空间复杂度
- 开始
- Shrio认证详解+自定义Realm
- 简单计算器
- 机器学习课堂笔记1
- C++模板实现链式队列
- 最大连续子串
- C++中this指针的用法及介绍
- SQL-EXIST-查询选修了全部课程的学生姓名
- poj-2676sudoku
- 技术有时间衰减因子.
- 10大深度学习架构:计算机视觉优秀从业者必备(附代码实现)
- Vmware打开服务器的时候提示“该虚拟机似乎正在使用中。”
- Kali 2.0 国内源