큐에 대해 배우고 있으며 큐를 선형 배열 (순환 배열이 아님)로 구현하는 다음 프로그램을 작성했습니다.배열 구현 큐 : 이상한 출력
#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가 얻을.? 쓰레기 값입니까? 원형 배열 구현을 사용하지 않았을 가능성이 있습니까? 나는 잘 모른다. 어떤 도움을 주셔서 감사합니다.
그러나 큐가 비어있을 때만 앞에 -1이되지 않습니까? count! = 0이면 0이나 그 이상의 높은 값과 같지 않아야합니까? – fts
'당신의'enqueue' 함수는 앞쪽으로 업데이트되지 않습니다. – mark