3.3.3 链队

LinkQueue.h

#pragma once
#include<iostream>
using namespace std;

class QueueNode {
public:
    int data;
    QueueNode* next;
};

class LinkQueue {
public:
    QueueNode* front, * rear;

    LinkQueue() {
        front = nullptr;
        rear = nullptr;
    }

    bool IsEmpty() {
        return front == nullptr;
    }

    void EnQueue(int e) {
        QueueNode* s;
        s = new QueueNode();
        s->data = e;
        s->next = nullptr;
        if (front == nullptr) {
            front = s;
            rear = s;
        }
        else {
            rear->next = s;
            rear = s;
        }
    }

    void DeQueue(int& e) {
        if (IsEmpty() == true) {
            cerr << "Empty!!!!" << endl;
            exit(1);
        }
        QueueNode* p = front;
        e = p->data;
        front = front->next;
        delete p;
    }
};

main.cpp

#include"LinkQueue.h"

int main() {
    LinkQueue L;
    int arr[] = { 1,2,3,4,5 };
    for (int i = 0; i < 5; i++) {
        L.EnQueue(arr[i]);
    }
    int temp;
    while (!L.IsEmpty()) {
        L.DeQueue(temp);
        cout << temp << " ";
    }
    cout << endl;
    return 0;
}

 

posted @ 2020-04-01 10:50  落地就是一把98K  阅读(105)  评论(0)    收藏  举报