用c++写一个链队列

来源:互联网 发布:java redis使用教程 编辑:程序博客网 时间:2024/06/16 15:49

1.首先要对队列中的每个节点进行定义。每个节点含有两项:储存的数据和指向下一个节点的指针。定义如下:

struct Node {int data;Node *next;};
2.接下来要对链队列进行类定义。如下:

class LinkQueue {private:Node *front;      //队头指针Node *real;       //队尾指针public:LinkQueue();     //构造函数,创建一个空队列~LinkQueue();    //析构函数,清除队列void EnterQueue(int obj); //将obj入队int DelQueue();           //将队头元素出队int GetHead();            //获取队头元素的值void DisplayQueue();      //遍历整个队列}; 
其中front节点和real节点分别表示队头指针和队尾指针。

3.各个函数的具体实现如下所示:

vLinkQueue::LinkQueue() {            //构造函数,创建一个空队列front = new Node;front->next = NULL;real = front;}LinkQueue::~LinkQueue() {           //析构函数,清除队列Node *temp;if (front != NULL) {temp = front;front = front->next;delete temp;}}void LinkQueue::EnterQueue(int obj){   //入队操作Node *temp;temp = new Node;temp->data = obj;temp->next = real->next;real->next = temp;real = temp;if (front->next == NULL) {front->next = temp;}}int LinkQueue::DelQueue(){             //出队操作int e;if (front == real) {cout << "error:下溢";return -1;   }else {Node *temp;temp = front->next;e=temp->data;front->next = temp->next;if (temp->next = NULL)real = front;delete temp;return e;}}int LinkQueue::GetHead(){             //获取队头的值int e;if (real == front) {cout << "error:该队列为空队列";return -1;}else {e = front->next->data;cout << e;return e;}}void LinkQueue::DisplayQueue(){         //遍历整个队列Node *temp;temp = new Node;if (real != front) {cout << "该栈的遍历依次为:";for (temp = front->next; temp->next != NULL; temp = temp->next){cout << temp->data << " ";}cout << real->data<<"\n";}else cout << "该栈为空";}
4.测试各个函数,测试程序如下:

int main() {                         //测试程序LinkQueue linkqueue;linkqueue.EnterQueue(2);linkqueue.EnterQueue(4);linkqueue.EnterQueue(3);linkqueue.EnterQueue(5);linkqueue.DisplayQueue();          //测试入队函数和遍历函数linkqueue.GetHead();               //测试出队函数和获取队头元素函数linkqueue.DelQueue();linkqueue.DisplayQueue();}
测试结果如下:







原创粉丝点击