算法学习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;
}

 

上一篇:数组队列如何手撕?解密ArrayBlockingQueue的实现内幕!


下一篇:每日一道:四数之和