私はキューについて学んでおり、キューを線形配列 (循環配列ではない) として実装する次のプログラムを作成しました。
#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 があるのはなぜですか? ゴミ値ですか?考えられる原因は、循環配列実装を使用していませんか? 何も思いつきません。どんな助けでも感謝します。