📄 c07p348.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 + -