⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 llqueue.h

📁 data structures, algorithms and Application书的源代码
💻 H
字号:
// header file llqueue.h

#ifndef LinkedQueue_
#define LinkedQueue_
#include "node.h"

template<class type>
class LinkedQueue {
// FIFO objects
   public:
      LinkedQueue() {front = rear = 0;}; // constructor
      ~LinkedQueue(); // destructor
      int IsEmpty()
         {return ((front) ? 0 : 1);}
      int IsFull();
      int First(type& x); // return first element of queue in x
      int Last(type& x); // return last element of queue in x
      int operator +(type x); // add x to queue
      int operator -(type& x); // delete x from queue
      // First, + and - return 0 on failure and 1 on success
   private:
      Node<type> *front, *rear;
};

template<class type>
LinkedQueue<type>::~LinkedQueue()
{
Node<type> *i;
while (front) {i = front->link; delete front; front = i;}
}

template<class type>
int LinkedQueue<type>::IsFull()
{
Node<type> *i;
i = new Node<type>;
if (i) {delete i; return 0;};
return 1;
}

template<class type>
int LinkedQueue<type>::First(type& x)
//set x to first element
{
if (IsEmpty()) return 0; //First fails
x = front->data;
return 1;
}

template<class type>
int LinkedQueue<type>::Last(type& x)
//set x to last element
{
if (IsEmpty()) return 0; //Last fails
x = rear->data;
return 1;
}

template<class type>
int LinkedQueue<type>::operator+(type x)
//add x to queue
{
Node<type> *i;
i = new Node<type>;
if (i) {
     i->data = x; i->link = 0;
     if (front) rear->link = i;
     else front = i;
     rear = i; return 1;
        };
return 0; // add fails 
}

template<class type>
int LinkedQueue<type>::operator-(type& x)
//delete first element and return in x
{
if (IsEmpty()) return 0; //delete fails
x = front->data;
Node<type> *i = front;
front = front->link;
delete i;
return 1;
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -