演算法學習3:資料結構-佇列
阿新 • • 發佈:2021-12-08
佇列(queue) 是一個先入先出(FIFO)的資料結構,由資料體、頭指標和尾指標組成。
定義資料結構queue:
struct queue { int data[100]; int head; int tail; };
在隊首刪除一個數(出隊):
q.head++;
在隊尾增加一個數(入隊):
q.data[q.tail] = x;
q.tail++;
示例:解密碼
密碼是一個9位的數,解密規則:首先將第一個數刪除,然後將第二個數放到這串數的末尾,然後將第三個數刪除,第四個數放到末尾...... 直到剩下最後一個數,將這個數也刪除。然後按照刪除的順序,把這些刪除的數連在一起,就是解密後的數。
程式碼如下:
#include<stdio.h> struct queue { int data[100]; int head; int tail; }; int main() { struct queue q; int i; // init queue q.head = 0; q.tail = 0; for (i = 0; i < 9; i++) { scanf_s("%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++; } getchar(); getchar(); return 0; }