思路:创建一个Node类型top作为过渡,用front赋值,并在item获取队首元素后delete。 retrieve方法:
Error_code Queue::retrieve(Queue_entry& item)const { Node* top = front; if (front == NULL) return underflow; item = top->entry; delete top; return success; }其他代码块: Node结构体:
struct Node { Node_entry entry; Node* next; Node(); Node(Node_entry item, Node* add_on = NULL); }; Node::Node() { next = NULL; } Node::Node(Node_entry item, Node* add_on) { entry = item; next = add_on; }Queue类:
class Queue { public: Queue(); Error_code append(const Queue_entry& item); Error_code retrieve(Queue_entry& item)const; protected: Node* front, * rear; }; Queue::Queue() { front = rear = NULL; } Error_code Queue::append(const Queue_entry& item) { Node* new_rear = new Node(item); if (new_rear == NULL)return overflow; if (rear == NULL) front = rear = new_rear; else { rear->next = new_rear; rear = new_rear; } return success; } Error_code Queue::retrieve(Queue_entry& item)const { Node* top = front; if (front == NULL)return underflow; item = top->entry; delete top; return success; }枚举Error_code:
enum Error_code { success, overflow, underflow };同理,链栈的top方法也可以这样实现。