现在的位置: 首页 > 综合 > 正文

队列初探

2017年11月21日 ⁄ 综合 ⁄ 共 588字 ⁄ 字号 评论关闭

主要概念:

队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,称为“出队”,而在队列尾部(tail)进行插入操作,称为“入队”。当队列中没有元素时(即head==tail),称为空队列。即“先进先出”(First In First Out)原则。

队列将是以后学习广度优先搜索的以及队列优化的Bellman-Ford最短路算法的核心数据结构。所以现在将队列的三个基本元素(一个数组,两个变量)封装为一个结构体类型,如下:

#include<stdio.h>
struct queue {
	int data[100]; //队列的主体,用来存储内容
	int head; //队首
	int tail; //队尾 
}; 

int main(void)
{
	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++;
		// 再将队首出队
		q.head++; 
	} 
	
	return 0;
}

抱歉!评论已关闭.