使用Array实现QUEUE
Implementation of QUEUE using Array
在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]<<" ";}
无论如何,我都会使用指针来实现它。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 用于AVX的ln(x)的实现,m256
- 为什么 std::queue 没有实现 insert() 而 std::d eque 实现了?
- 使用Array实现QUEUE
- 栈实现了Queue Peek功能