【数据结构】队列以及两个队列实现一个栈
发布时间: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中的旧操作系统级别?
