1. 程式人生 > >從一道數組類型的題來看隊列

從一道數組類型的題來看隊列

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; }

從一道數組類型的題來看隊列