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