首先引用《啊哈算法》中的一个题,背景就不说了。大体意思就是输入一串数字首先将第一个数字删除,然后将第二个数放在末尾。依次循环,最后按照删除的顺序,把这些数连起来。
这里然后引入队列这个概念,队列是一种特殊的线性结构,只允许在队列的首部进行删除操作->出队,而在尾部进行插入操作->入队,当队列为空时,称为空队列。
队列的三个基本元素(一个数组,两个变量)
其次说一下这个题的代码:
#include<iostream>
using namespace std;
int main()
{
int q[102]= {0,6,3,1,7,5,8,9,2,4},head,tail;
head=1;
tail=10;
while(head<tail)
{
cout<<q[head]<<" ";
head++;
q[tail]=q[head];
head++;
tail++;
}
return 0;
}
首先解释一下代码的意思。第一步,定义一个头部和尾部。第一个数是被删除的,所以将第一个数输出。其次,在队列不是空队列的前提下运行,将第一个数输出后,头部往后移动一位。然后再将头部的值付给尾部,然后头部再加1,然后再进行循环。直到为空队列时停止。‘
一共有九个数(0不计算在内)