队列(链式存储)C++模板实现
来源:互联网 发布:行政服务中心招聘网络 编辑:程序博客网 时间:2024/06/06 17:21
#include <iostream>using namespace std;//队列结点类template <typename T>class QueueNode{private:T data; //结点数值部分QueueNode<T> * next; //指向下一结点public:QueueNode(T d=0 , QueueNode<T> *n=NULL){ //构造函数data= d;next=n;};void setData(T d){ //设置数值部分data = d;}void setNext(QueueNode<T> * n){ //设置nextnext = n;}T getData() const { //返回数值部分return data;}QueueNode<T> * getNext() const{ //返回nextreturn next;}};//队列类template <typename T>class Queue{private:int num; //队列结点个数QueueNode<T> *front,*rear; //front队首指针(出队的一端),rear队尾指针(入队的一端)。public:Queue(){ //队列类构造函数num=0;front=NULL;rear=NULL;}~Queue(){ //释放整个队列空间即释放整个链表while(front){QueueNode<T> * p = front;front = front->getNext();delete p;}}void In(T x); //一个值为x的结点进队void Out(); //队首结点出队T getFront() const; //获得队首结点的值bool isEmpty() const; //判断队列是否为空int getLength() const; //获得队列长度void printAll() const; //打印整个队列};//一个值为x的结点进队,实现部分template <typename T>void Queue<T>::In(T x){if(isEmpty())front=rear=new QueueNode<T>(x);else {QueueNode<T> *p= new QueueNode<T>(x);rear->setNext(p);rear = p;}num++;}//队首结点出队,实现部分template <typename T>void Queue<T>::Out(){QueueNode<T> *p=front;front = front->getNext();delete p;num--;} //获得队首结点的值,实现部分template <typename T>T Queue<T>::getFront() const {return front->getData();}//判断队列是否为空,实现部分template <typename T>bool Queue<T>::isEmpty() const {return num==0;}//获得队列长度,实现部分template <typename T>int Queue<T>::getLength() const {return num;}//打印整个队列,实现部分template <typename T>void Queue<T>::printAll() const{if(isEmpty())cout<<"队列为空"<<endl;else{QueueNode<T> *p =front;int i =1;while(p){cout<<"第"<<i<<"个结点:"<<p->getData()<<endl;p = p->getNext();i++;}}}void main(){Queue<int> a; //创建队列cout<<"队列初始长度:"<<a.getLength()<<endl<<endl;a.In(1); //值为1的结点进队a.In(2); //值为2的结点进队a.In(3); //值为3的结点进队a.In(4); //值为4的结点进队a.In(5); //值为5的结点进队cout<<"队列长度:"<<a.getLength()<<endl;a.printAll(); //打印队列a.Out(); //队首结点出队a.Out(); //队首结点出队cout<<endl<<"队列长度:"<<a.getLength()<<endl;a.printAll(); //打印队列}
0 0
- 队列(链式存储)C++模板实现
- 队列的链式存储实现c语言
- 链式队列(C实现)
- 队列链式存储实现
- 队列(链式存储) java实现
- C实现链式队列
- C链式队列实现
- 栈(链式存储) C++模板实现
- C++模板实现链式队列
- 循环队列-链式存储结构-c语言实现
- Queue队列 链式存储实现
- 单链表实现队列链式存储
- 数据结构实现链式队列(C语言)
- 链式队列的实现(c++)
- 链式循环队列实现(C语言)
- C语言实现链式队列
- C链式队列的实现
- C语言实现链式队列
- CSDN and Me
- 修改encodedecode demo测试算法封装
- 快速排序
- C++primer plus第六版课后编程题答案 7.8a
- 解决eclipse 卡的问题,并且可以看到JDK源码
- 队列(链式存储)C++模板实现
- Capture and Name Parts of the Match (抓取和命名匹配中的部分)
- 将学生信息保存到文件中,并读出文件内容
- 通过反射获取相关类中的方法声明
- c3p0详细配置
- Eclipse选中变量名,相同变量都变色显示 的设置
- android开发笔记之imei回传
- 守望者闪烁题目解析
- c#--简单http image 浏览器