從一道數組類型的題來看隊列
阿新 • • 發佈:2018-05-18
span style tdi solid spa sca 隊列 得出 打印
新學期開始了,小哈是小哼的新同桌(小哈是個小美女哦~),小哼向小哈詢問 QQ號, 小哈當然不會直接告訴小哼啦,原因嘛你懂的。所以小哈給了小哼一串加密過的數字,同時 小哈也告訴了小哼解密規則。規則是這樣的:首先將第 1個數刪除,緊接著將第 2個數放到 這串數的末尾,再將第 3個數刪除並將第 4個數放到這串數的末尾,再將第 5個數刪除…… 直到剩下後一個數,將後一個數也刪除。按照剛才刪除的順序,把這些刪除的數連在一 起就是小哈的 QQ啦。現在你來幫幫小哼吧。小哈給小哼加密過的一串數是“6 3 1 7 5 8 9 2 4”。
首先我們進行這題的分析,我們要做的很簡單,就是對隊列的一個操作,我們要做的就是這樣先取出兩個數,以一作為初始下標,我們要做的就是刪除下標為奇數的,然後把下標為偶數的,這樣順序進行,我們可以進行解密;但是我們刪除時要註意要記錄下,這樣得出結果,首先我們定義一個數組;int q[100],然後進行處理
#include<stdio.h> int main() { int q[101]={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++; //模仿隊列的順序出棧 } getchar(); getchar();return 0; }
下面我們由此轉發有隊列的思考,其實隊列可以抽象為我們對數組問題的深度思考,我們在進行隊列的處理時需要設置結構體,然後進行結構體的一些處理即可
#include<stdio.h> struct quete { int q[100]; int head; int tail; }; int main() { struct quete q; int i; q.head=1; q.tail=1; for(i=1;i<=10;i++) { scanf("%d",&q.q[q.tail]); q.tail++; } while(q.head<q.tail) { printf("%d",q.q[q.head]); q.head++; q.q[q.tail]=q.q[q.head]; q.tail++; q.head++; } return 0; }
從一道數組類型的題來看隊列