C++链列表的获取队首元素方法(retrieve)

mac2024-10-16  3

思路:创建一个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方法也可以这样实现。

最新回复(0)