队列:
- 队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出
- 线性表 双端
#include<iostream>
using namespace std;
class Queue
{
public:
Queue(int frontEndIndex,int backEndIndex);
~Queue();
void PrintDoubleSideIndex();
void IntoQueue(int value);
void OutOfQueue();
void PrintQueue();
private:
int queueArr[100];
int frontEndIndex;
int backEndIndex;
};
Queue::Queue(int frontEndIndex,int backEndIndex){
this -> frontEndIndex = frontEndIndex;
this -> backEndIndex = backEndIndex;
};
Queue::~Queue(){
};
void Queue::PrintDoubleSideIndex(){
printf("队列前端下标:%d,队列后端下标:%d\n",this->frontEndIndex,this->backEndIndex);
}
void Queue::IntoQueue(int value){
printf("%s:%d\n", "入队",value);
if(this->backEndIndex <= this->frontEndIndex){
this->queueArr[this->frontEndIndex] = value;
this->backEndIndex = this->backEndIndex + 1;
}else if(this->backEndIndex > 0){
int arr[100] = {};
for (int i = 0; i < this->backEndIndex; ++i)
{
arr[i] = this->queueArr[i];
}
for (int i = 0; i < this->backEndIndex; ++i)
{
if((i+1)<= this->backEndIndex){
this->queueArr[i+1] = arr[i];
}
}
this->queueArr[this->frontEndIndex] = value;
this->backEndIndex = this->backEndIndex + 1;
};
}
void Queue::OutOfQueue(){
printf("%s:%d\n", "出队",this->queueArr[this->backEndIndex-1]);
this->queueArr[this->backEndIndex-1] = 0;
this->backEndIndex = this->backEndIndex - 1;
}
void Queue::PrintQueue(){
printf("%s\n", "打印队列:");
for (int i = 0; i < this->backEndIndex; ++i)
{
cout << this->queueArr[i] << " ";
}
cout << endl;
}
int main(int argc, char const *argv[])
{
Queue queue(0,0);
queue.IntoQueue(1);
queue.IntoQueue(2);
queue.IntoQueue(3);
queue.IntoQueue(4);
queue.PrintQueue();
queue.PrintDoubleSideIndex();
queue.OutOfQueue();
queue.PrintQueue();
queue.OutOfQueue();
queue.PrintQueue();
queue.PrintDoubleSideIndex();
return 0;
}
输出结果 - 》》》
