解密QQ
小哼问小哈QQ,小哈说了一串加密数字"6 3 1 7 5 8 9 2 4", 解密规则是:丢到第一个数字,将第二个放在其他数字后面;丢到第三个数字,将第四个放在其他数字后面;如此依次循环,QQ号是丢掉数字的排列("6 1 5 9 4 7 2 8 3")。
数组写法
#include <stdio.h>
int main(int argc, const char * argv[]) {
int q[102]={0, 6, 3, 1, 7, 5, 8, 9, 2 ,4}, head,tail;
head = 1;
tail = 10;
while (head < tail) {
// 输出,即丢弃
printf("%d ", q[head]);
head ++; //指向最新头部
// 排到最后
q[tail] = q[head];
tail ++; //指向最新尾部
head ++; //指向最新头部
}
return 0;
}
结构体写法
#include <stdio.h>
struct queue
{
int data[100]; //队列主体,用来存储内容
int head; //队首
int tail; //队尾
};
int main(int argc, const char * argv[]) {
struct queue q;
q.head = 1;
q.tail = 1;
for (int i=1; i<=9; i++) {
scanf("%d", &q.data[q.tail]);
q.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 ++;
}
return 0;
}
队列总结
队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作(出队),而在队列的尾部进行插入操作(入队)。队列的特性:"先进先出"。
网友评论