【数据结构】队列以及两个队列实现一个栈
发布时间:2020-12-15 05:59:54 所属栏目:安全 来源:网络整理
导读:队列以及两个队列实现一个栈 #pragma oncetemplate class Tstruct QueueNode{public : QueueNode( const T x) :_data(x),_next(NULL) {} T _data; QueueNode* _next;};template class Tclass queue{public : queue() :_head(NULL),_tail(NULL),_size(0) {} ~
队列以及两个队列实现一个栈 #pragma once template <class T> struct QueueNode { public : QueueNode( const T& x) :_data(x),_next(NULL) {} T _data; QueueNode* _next; }; template <class T> class queue { public : queue() :_head(NULL),_tail(NULL),_size(0) {} ~queue() { QueueNode<T>* begin = _head; while(begin) { QueueNode<T>* tmp = begin; begin = begin->_next ; delete tmp; } } T& GetTop() { T* tmp = (T *)_head; return *tmp; } int GetSize() { return _size; } bool Emptyqueue() { if(_head) return false ; else return true ; } void PushQueue(const T& x) { //空队列 //非空 if(_head == NULL) { _head = new QueueNode<T>(x); _tail = _head; } else { _tail->_next = new QueueNode<T>(x); _tail = _tail->_next ; } _size++; } void PopQueue() { //空 //一个 //两个及以上 if(_head == NULL) { cout<< "该队列为空"<<endl; } else if (_head == _tail) { delete _head; _head = NULL; _tail = NULL; _size--; } else { QueueNode<T>* tmp = _head; _head = _head->_next ; delete tmp; _size--; } } T& operator->() { return *this ; } private : QueueNode<T>* _head; QueueNode<T>* _tail; int _size; }; //两个队列实现一个栈 template <class T> class stack1 { public : void pushstack1(const T& x) { if(!_emptyqueue.Emptyqueue()) { while(!_emptyqueue.Emptyqueue()) { _noemptyqueue.PushQueue (_emptyqueue.GetTop ()); _emptyqueue.PopQueue (); } } _noemptyqueue.PushQueue (x); } void popstack1() { if(_noemptyqueue.Emptyqueue()) { cout<< "该栈为空"<<endl; } while(1) { T tmp = _noemptyqueue.GetTop (); _noemptyqueue.PopQueue (); if(!_noemptyqueue.Emptyqueue ()) { _emptyqueue.PushQueue (tmp); } else break; } } private : queue<T> _emptyqueue; queue<T> _noemptyqueue; }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- angular – 如何使用离子2打字稿从本地JSON获取数据到HTML页
- 利用WebService解析出的天气预报
- Scala – 将整数列表映射到接收java.lang.Object的方法
- angularjs – 我如何测试事件在角?
- webservice 发布的接口不能使“多态”
- scala – Future.traverse似乎按顺序工作而不是并行工作.这
- Bootstrap日期和时间表单组件运用兼容ie8
- axis2 调用webService(包含用axis2和xfire发布的)实例,加注
- angularjs – 用于舍入十进制数的Angular指令
- unix – 我如何知道AIX中的旧操作系统级别?