使用Array实现QUEUE

Implementation of QUEUE using Array

本文关键字:QUEUE 实现 Array 使用      更新时间:2023-10-16

在C++中使用数组实现QUEUE

Dequeue函数似乎有一些问题。它不是从前面删除,而是从后面删除。。我不知道出了什么问题。

请帮忙!

#include <iostream>
using namespace std;
#define MAX_SIZE 101
int A[MAX_SIZE];
int front=-1,rear=-1;
void Enq(int x)
{ if (rear==(MAX_SIZE-1))
{return;}
if (front==-1 && rear==-1)
{front=rear=0;}
else { rear=rear+1;}
A[rear]=x;
}
void Deq()
{ if (front == -1 && rear == -1)
{return;}
else if(front == rear)
{
front = rear = -1;
}
else
front++;
}
void Print()
{ cout<<"Queue is: ";
 int count=(rear-front);
for(int i=0; i<=count; i++)
{ cout<<A[i]<<" ";
}
cout<<"n";
}
int main()
{ 
Enq(2); Print();
Enq(3); Print();
Enq(5); Print();
Deq();  Print();
Deq();  Print();
Enq(24); Print();
return 0;
}

输出:成功时间:0内存:3460信号:0

队列为:2

队列为:2 3

队列为:2 3 5

队列为:2 3

队列为:2

队列为:2 3

您正在显示count个元素,计算结果为:

int count=(rear-front);

当你制作

front++

您只会少显示一个元素。但你总是从0的位置开始。

for(int i=0; i<=count; i++)
{ cout<<A[i]<<" ";
}

也许你应该从"前面"开始,然后上升到"前面+计数"?

请记住,这个实现从来没有真正删除过任何东西,并且您可以只调用Enq()MAX_SIZE多次,无论您调用Deq()多少次。

编辑:如果希望能够重用空间,可以在"front-1"位置添加元素,然后执行front--,前提是front>0。

使用前面和后面的变量:

for(int i=front; i<=rear; i++) { cout<<A[i]<<" ";}

无论如何,我都会使用指针来实现它。