1. 程式人生 > 其它 >演算法學習3:資料結構-佇列

演算法學習3:資料結構-佇列

佇列(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; }