0

私はキューについて学んでおり、キューを線形配列 (循環配列ではない) として実装する次のプログラムを作成しました。

   #include<iostream>
using namespace std;

class queue {
    int front, max_queue, rear, count = 0;
    int *items;
public:
    queue(int);
    ~queue();
    void enqueue(int);
    void dequeue();
    bool isEmpty();
    int size();
    void display();
};

queue::~queue() {
    delete []items;
}

queue::queue(int max) {
    front = -1;
    rear = -1;
    max_queue = max;

    items = new int[max_queue];
}

void queue::enqueue(int n) {
    if (count == max_queue)
        cout << "queue is full, no enqueue possible";
    else {
        items[++rear] = n;
        count++;
    }
}

void queue::dequeue() {
    if (count == 0)
        cout << "no dequeue possible, queue already empty";
    else {
        front--;
        count--;
    }
}

bool queue::isEmpty() {
    return ((count == 0) ? 1 : 0);
}

int queue::size() {
    return count;
}

void queue::display() {
    if (count == 0)
        cout << "nothing to display";
    else {
        for (int i = front; i <= rear;)
            cout << items[i++] << endl;
    }

}

int main() {

    queue *qe = new queue(10);

    qe->enqueue(1);
    qe->enqueue(2);
    qe->enqueue(3);
    qe->enqueue(4);
    qe->display();


    return 0;
}

次の出力が得られます

49
1
2
3
4

RUN FINISHED; exit value 0; real time: 10ms; user: 0ms; system: 0ms

出力に 49 があるのはなぜですか? ゴミ値ですか?考えられる原因は、循環配列実装を使用していませんか? 何も思いつきません。どんな助けでも感謝します。

4

3 に答える 3

3

front-1の表示ループ i を開始しています。キューの前のスポットを指しています。

于 2013-08-14T15:21:04.487 に答える