不使用库实现队列的基本操作

template < typename T >
struct Node
{ public :
                Node( const T & d )
                                :_data(0)
                                , _next( NULL )
                                , _pre( NULL )
                {  }
                 T * _data;
                 Node < T >* _next;
                 Node < T >* _pre;
};
template < typename T >
class Queue   //先进先出,
{
public :
                Queue()
                                :_tail( NULL )
                                , _head( NULL )
                                , _size(0)
                {  }
                 void Push( const T & n )
                {
                                 if (_size == 0)
                                {
                                                _head = _tail = _ByeNode( n );
                                }
                                 else
                                {
                                                 Node < T > *temp = _ByeNode( n );
                                                _tail->_next = temp;
                                                temp->_pre = _tail;
                                                _tail = _tail->_next;
                                }
                                _size++;
                }
                 void Pop()   //移除一个元素,删除队头
                {
                                 if (_size == 0)
                                {
                                                 return ;
                                }
                                 else if (_size = 1)
                                {
                                                 delete _head;
                                                _head = NULL ;
                                                _tail = NULL ;
                                }
                                 else
                                {
                                                _head =_head->_next;
                                                 delete _head->_pre;
                                }
                                _size--;
                }
                 T & Front()   //返回第一个插入的元素,即队头
                {
                                 return _head;
                }
                 T & Back()   //返回最后被插入的元素,即队尾
                {
                                 return _tail;
                }
                 bool Empty()  //队列为空时,返回true
                {
                                 if (_size == 0)
                                {
                                                 return true ;
                                }
                                 else
                                {
                                                 return false ;
                                }
                }
                 size_t Size()  //队列中元素个数
                {
                                 return _size;
                }
                 Node < T > * _ByeNode( const T & n )
                {
                                 return new Node < T >( n );
                }

protected :
                 Node < T >* _tail;
                 Node < T >* _head;
                 size_t _size;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值