第七週—項目 - 隊列數組

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">問題及代碼:</span>

創建10個隊列,分別編號爲0-9(處理爲隊列數組,編號即下標)。輸入若干個正整數,以數字0作爲結束。設輸入的值爲x,其個位數字的大小爲i,則將x插入到編號爲i的隊列中。最後輸出所有的非空隊列。 
  要求將隊列處理成鏈式隊列,使用鏈式隊列算法庫中定義的數據類型及算法,程序中只包括一個函數(main函數),入隊和出隊等操作直接在main函數中調用即可。 
  設程序運行時輸入:70 59 90 72 67 88 80 64 29 97 18 83 40 13 0 
  輸出結果如下圖: 
  這裏寫圖片描述


#include <stdio.h>
#include <malloc.h>
#include "liqueue.h"
#define N 10

int main()
{
    int i, a;
    LiQueue *qu[N]; //定義隊列指針數組
    for (i=0; i<N; i++)
        InitQueue(qu[i]);       //初始化隊列

    //爲隊列中加入值
    printf("輸入若干正整數,以0結束: ");
    scanf("%d", &a);
    while(a)
    {
        enQueue(qu[a%10], a);
        scanf("%d", &a);
    }

    //輸出各個隊列
    printf("按個位數整理到各個隊列中後,各隊列出隊的結果是: \n");
    for (i=0; i<N; i++)
    {
        printf("qu[%d]: ", i);
        while(!QueueEmpty(qu[i]))
        {
            deQueue(qu[i], a);
            printf("%d ", a);
        }
        printf("\n");
    }

    //銷燬各個隊列
    for (i=0; i<N; i++)
        DestroyQueue(qu[i]);
    return 0;
}



輸出及結果:



分析:

通過對輸入的數字取餘數來判斷進入哪一個隊列;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章