c++链表实现队列

template<class T>
class LinkedQueue;
template<class T>
class Node
{
 friend LinkedQueue<T>;
private:
 T data;
 Node<T>* link;
};
template<class T>
class LinkedQueue
{
public:
 LinkedQueue(){front=rear=0;}
    ~LinkedQueue();
    bool IsEmpty() const
    {
  return ((front)?false:true);
 }
   bool IsFull()const;
   T First()const;
   T Last()const;
   LinkedQueue<T>& Add(const T& x);
   LinkedQueue<T>& Delete(T& x);
private:
 Node<T> *front;
 Node<T> *rear;
};

template<class T>
LinkedQueue<T>::~LinkedQueue()
{
 Node<T> * next;
 while(front)
 {
  next=front->link;
  delete front;
  front=next;
 }
}
template<class T>
bool LinkedQueue<T>::IsFull() const
{
 Node<T>* p;
 try
 {
  p=new Node<T>;
  delete p;
  return false;
 }
 catch(){}
}
template<class T>
T LinkedQueue<T>::First()const
{
 if(IsEmpty())exit(0);
 return front->data;
}
template<class T>
T LinkedQueue<T>::Last()const
{
 if(IsEmpty())exit(0);
 return rear->data;
}
template<class T>
LinkedQueue<T>& LinkedQueue<T>::Add(const T &x)
{
 Node<T>* p=new Node<T>;
 p->data=x;
 p->link=0;
 if(front)rear->link=p;
 else
  front=p;
 rear=p;
 return *this;
}

template<class T>
LinkedQueue<T>& LinkedQueue<T>::Delete(T &x)
{
 if(IsEmpty())exit(0);
 x=front->data;
 Node<T>* p=front;
 front=front->link;
 delete p;
 return *this;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值