首页 > 其他 > 详细

队列学习笔记 顺序队列

时间:2015-04-28 18:48:20      阅读:226      评论:0      收藏:0      [点我收藏+]
//顺序队列操作
#define QUEUEMAX 15
typedef struct 
{
	DATA data[QUEUEMAX]; // 队列数组 
	int head;   //队头 
	int tail;   // 队尾 
 } SeqQueue;
SeqQueue *SeqQueueInit()
{
	SeqQueue *q;
	if(q=(SeqQueue *)malloc(sizeof)(SeqQueue))   // 申请保存队列的内存 
	{
		q->head = 0;  // 设置队头 
		q->tail = 0;  // 设置队尾 
		return q;
	}else
		return NUll;   // 返回空 
}
void SeqQueueFree (SeqQueue *q) // 释放队列 
{
	if(q!=NULL)
		free(q);
}
int SeqQueueIsEmpty(SeqQueue *q)  //  队列是否为空 
{
	return (q->head==q->tail);
}
int SeqQueueIsFull(SeqQueue *q)  //队列是否已满  
{
	return(q->tail==QUEUEMAX);
}
int SeqQueueLen(SeqQueue *q) // 获取队列长度 
{
	return (q->tail-q->head);
}
int SeqQueueIn(SeqQueue *q,DATA data)  //顺序队列的入队函数 
{
	if(q->tail==QUEUEMAX)
	{
		printf("队列已满!\n");
		return(0);
	}else{
		q->data[q->tail++]=data;
		return(1);
	}
}
DATA *SeqQueueOut(SeqQueue *q)  //顺序队列出队 
{
	if(q->head == q->tail)
	{
		printf("\n队列已空! \n");
		return NULL;
	}else{
		return &(q->data[q->head++]);
	}
}
DATA *SeqQueuePeek(SeqQueue *q)  //获取头元素 
{
	if(SeqQueueIsEmpty(q))
	{
		printf("\n队列为空!\n");
		return NULL;
	}
	else{
		return &(q->data[q->head]);
	}
}


队列学习笔记 顺序队列

原文:http://9815936.blog.51cto.com/9805936/1639811

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!