c++链表实现队列

template
class LinkedQueue;
template
class Node
{
 friend LinkedQueue;
private:
 T data;
 Node* link;
};
template
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& Add(const T& x);
   LinkedQueue& Delete(T& x);
private:
 Node *front;
 Node *rear;
};

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

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

你可能感兴趣的:(C/C++)