<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;
}
輸出及結果:
分析:
通過對輸入的數字取餘數來判斷進入哪一個隊列;