解密QQ
小哼問小哈QQ,小哈說了一串加密數(shù)字"6 3 1 7 5 8 9 2 4", 解密規(guī)則是:丟到第一個(gè)數(shù)字,將第二個(gè)放在其他數(shù)字后面;丟到第三個(gè)數(shù)字,將第四個(gè)放在其他數(shù)字后面;如此依次循環(huán),QQ號(hào)是丟掉數(shù)字的排列("6 1 5 9 4 7 2 8 3")。
數(shù)組寫法
#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;
}
結(jié)構(gòu)體寫法
#include <stdio.h>
struct queue
{
int data[100]; //隊(duì)列主體,用來存儲(chǔ)內(nèi)容
int head; //隊(duì)首
int tail; //隊(duì)尾
};
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;
}
隊(duì)列總結(jié)
隊(duì)列是一種特殊的線性結(jié)構(gòu),它只允許在隊(duì)列的首部(head)進(jìn)行刪除操作(出隊(duì)),而在隊(duì)列的尾部進(jìn)行插入操作(入隊(duì))。隊(duì)列的特性:"先進(jìn)先出"。