队列
(特殊的线性结构)
(先进先出原则 先进先出的数据结构)
只允许队列首部(head)删除操作,叫出队。
队列尾部(tail)插入操作,叫入队。
当队列中没有元素时,head=tail称为空队列
将队列的三个基本元素:一个数组,两个变量
例:9个数,规则:将第一个数删除,紧接着将第2个数放到数的末尾,再将第3个数删除并将第4个数放到数的末尾,再将第五个数删除…直到剩下最后一个数,并将其删除。
结果是按照刚才删除的顺序,把这些删除的数连在一起所得
在此我们验证631758924
程序运行结果615947283
#include <stdio.h>
int main() {
int q[102] = {0, 6, 3, 1, 7, 5, 8, 9, 2, 4}, head, tail;
//初始化队列
head = 1;
tail = 10; //队列中已经有9个元素了,tail指向队尾的后一个位置
while(head < tail) { // 当队列不为空的时候执行循环
//打印队首并将队首出队
printf("%d ",q[head]);
head++;
//先将新队首的数添加到队尾
q[tail] = q[head];
tail++;
//再将队首出队
head++;
}
getchar();getchar();
return 0;
}
结构体实现队列操作
#include <stdio.h>
struct queue {
int data[100]; //队列的主体,用来存储内容
int head; //队首
int tail; //队尾
};
int main () {
struct queue q;
int i;
//初始化队列
q.head = 1;
q.tail = 1;
for (i = 1; i <= 9; i++) {
//依次向队列插入9个数 队尾插入
scanf ("%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++;
}
getchar(); getchar();
return 0;
}
};