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

📄 c07p348.txt

📁 Data Abstraction & Problem Solving with C++源码
💻 TXT
字号:
// *********************************************************// Implementation file QueueP.cpp for the ADT queue.// Pointer-based implementation.// *********************************************************#include "QueueP.h"  // header file#include <cstddef>#include <cassert>Queue::Queue() : backPtr(NULL), frontPtr(NULL){}  // end default constructorQueue::Queue(const Queue& Q){  // Implementation left as an exercise (Exercise 4).}  // end copy constructorQueue::~Queue(){   while (!isEmpty())      dequeue();   assert ((backPtr == NULL) && (frontPtr == NULL));}  // end destructorbool Queue::isEmpty() const{   return backPtr == NULL;}  // end isEmptyvoid Queue::enqueue(QueueItemType newItem){   // create a new node   QueueNode *newPtr = new QueueNode;  // set data portion of new node   newPtr->item = newItem;   newPtr->next = NULL;   // insert the new node   if (isEmpty())      // insertion into empty queue      frontPtr = newPtr;   else      // insertion into nonempty queue      backPtr->next = newPtr;   backPtr = newPtr;  // new node is at back}  // end enqueuevoid Queue::dequeue() throw(QueueException){   if (isEmpty())      throw QueueException("QueueException: empty queue, cannot dequeue");   else   {  // queue is not empty; remove front      QueueNode *tempPtr = frontPtr;      if (frontPtr == backPtr)   // special case?      {  // yes, one node in queue         frontPtr = NULL;         backPtr = NULL;      }      else         frontPtr = frontPtr->next;      tempPtr->next = NULL;  // defensive strategy      delete tempPtr;   } // end if}  // end dequeuevoid Queue::dequeue(QueueItemType& queueFront) throw(QueueException){   if (isEmpty())      throw QueueException("QueueException: empty queue, cannot dequeue");   else   {  // queue is not empty; retrieve front      queueFront = frontPtr->item;      dequeue();  // delete front   } // end if}  // end dequeuevoid Queue::getFront(QueueItemType& queueFront) const                     throw(QueueException){   if (isEmpty())      throw QueueException("QueueException: empty queue, cannot getFront");   else      // queue is not empty; retrieve front      queueFront = frontPtr->item;}  // end getFront// End of implementation file.

⌨️ 快捷键说明

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