【发布时间】:2020-02-04 04:01:48
【问题描述】:
我正在尝试使用 C++ 中的数组来实现队列。我一生都无法弄清楚为什么我的某些方法无法正常工作。我的 exists 方法没有找到队列中的值,而我的重复方法是复制队列的后部而不是前部。复制方法应该获取队列前面的任何内容(假设它不是空的或满的),复制该值,并将其放在队列的前面。我的会取后面的值,复制它,然后把它放在后面的一个位置。此外,Enqueue 方法未正确插入值。
#include <iostream>
#include "queue.h"
using namespace std;
static int nums[10];
int front = 0, rear = 0, sizeOfArray = 0;
int initialCapacity = 10;
int Enqueue(int num) {
if (sizeOfArray == initialCapacity) {
return -58;
}
for (int i = 0; i < initialCapacity; i++) {
if (nums[i] == num) {
return -62;
}
else {
nums[rear] = num;
rear = (rear + 1);
sizeOfArray++;
return 0;
}
}
}
int Dequeue(int& num) {
if (sizeOfArray == 0) {
return -64;
}
front = (front + 1);
sizeOfArray--;
return 0;
}
int isEmpty() {
if (sizeOfArray == 0) {
return 1;
}
else {
return 0;
}
}
int Exists(int num) {
for (int i = 0; i < sizeOfArray; i++) {
int index = (front + i);
if (nums[index] == num) {
return 1;
}
else {
return 0;
}
}
return 0;
}
void Clear(void) {
front = rear = sizeOfArray = 0;
}
void Print(void) {
for (int i = 0; i < sizeOfArray; i++) {
cout << nums[i] << " ";
}
cout << endl;
}
int Duplicate(void) {
if (sizeOfArray == 0) {
return -78;
}
if (sizeOfArray == initialCapacity) {
return -81;
}
int dupeNum;
dupeNum = nums[front];
nums[front + 1] = dupeNum;
sizeOfArray++;
return 0;
}
每当我在测试驱动程序中执行以下方法时: 入队 4 入队 5 存在 5 复制 打印
我得到这个输出:
Test 1 0 - 0 表示成功
Test 2 0 - 0 表示成功
Test 3 0 - 0 表示失败
Test 4 0 - 表示成功
4 4 0
【问题讨论】:
标签: c++ arrays debugging queue