解密规则:
给出一个九位数,将第一个数删除,再将第二个数放到这串数的末尾,
以此类推......直到剩下最后一个数,再将最后一个数也删除。
再按照刚刚删除的顺序,把删除的数连接再一次 得出QQ号
解密法则:
如何将第一个数删除?
只需将之后的所有数往前面挪一位,覆盖住第一个数即可
再将第二个数保存到队伍尾部
再第三个数删除 第四个保存到尾部 ......以此类推
当队首队尾重合时,即所有数删除完成。
代码如下
#include <stdio.h>
struct queue {
int data[100];
int head; //定义队首
int tail; //定义队尾
};
//定义结构体struct
//引用时使用点运算符q.(结构体内容)
int main()
{
struct queue q;//定义结构体变量q
q.head=1;
q.tail=1;
int i;
for(i=1;i<=9;i++){//假定有九个数参与解密
scanf("%d",&q.data[q.tail]);//输入这九个数
q.tail++;
//这样做的好处,有多少个数,tail就代表最后一个数
}
while(q.head<q.tail){
printf("%d",q.data[q.head]);
//打印队首,并记录第一个队首
q.head++;
//此时第一个数就出列了 ,被后面的第二个数覆盖
q.data[q.tail]=q.data[q.head];
//随后第二个数被调到队尾
q.tail++;
// 队尾数加一,留位置给下下个数
q.head++;
//此时为第三个数,重复while中的流程,直到head+tail
}
return 0;
}
书上的代码最后两个getchar();是干啥的 求指导谢谢!