前言
P29解密QQ号问题,实质就是队列问题,注意“先进先出”FIFO原则。
提示:以下是本篇文章正文内容,下面案例可供参考
一、C++代码
代码如下(示例):
过程见图:
#include<iostream>
using namespace std;
int main()
{
int q[102] = { 0,6,3,1,7,5,8,9,2,4 }, head, tail;//习惯不用0号位置
//初始化队列 注意tail是记录队尾的下一个位置
head = 1;
tail = 10;
while (head < tail) //只要队列不为空就执行循环
{
//打印队首并将队首6出队
cout << q[head];
head++;
//将新队首3添加到队尾
q[tail] = q[head];
tail++;
//再将队首指针后移
head++;
}
getchar(); getchar(); //疑问
system("pause");
return 0;
}
二、疑点
代码如下(示例):
无
最后的两个getchar()什么意思?
三、用结构体实现队列的操作
#include<iostream>
using namespace std;
//先定义结构体
struct queue //结构体成员列表含以下三个成员:
{
int data[100]; //队列的主体,放数据的数组
int head;
int tail;
};
int main()
{
//在创建结构体变量
struct queue q;
int i;
//初始化队列 现在队列为空
q.head = 1; //用.号访问结构体变量q的内部成员
q.tail = 1;
cout << "请依次输入9个数字:" << endl;
for (int i = 1; i < 10; i++)
{
//依次从队尾插入九个数字
cin >> q.data[q.tail];
q.tail++;
}
while (q.head <q. tail)
{
cout <<q.data[q.head] << " ";
q.head++;
q.data[q.tail] = q.data[q.head];
q.tail++;
q.head++;
}
getchar(); getchar();
system("pause");
return 0;
}
注意!!访问结构体变量的成员要用 . ,注意与一中区分。