码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构--队列

时间:2020-08-28 14:28:37      阅读:45      评论:0      收藏:0      [点我收藏+]

标签:des   size   includes   数据   return   --   lse   type   empty   

include<stdio.h>

include<malloc.h>

typedef struct Queue
{
int * pBase;
int front;
int rear;
}QUEUE,*PQUEUE;

void init_queue(PQUEUE);//初始化
bool en_queue(PQUEUE,int);//入队
void traverse_queue(PQUEUE);//输出
bool empty(PQUEUE pQ);//判断队列是否为空
bool full_queue(PQUEUE pQ);//判断队列是否为满
bool dequeue(PQUEUE,int *);//出队

int main(void)
{
int val;//存放出队的临时值

QUEUE Q;

init_queue(&Q);//初始化

en_queue(&Q,1);//入队
en_queue(&Q,2);
en_queue(&Q,3);
en_queue(&Q,4);
en_queue(&Q,5);
traverse_queue(&Q);//输出

if(dequeue(&Q,&val))
{
	printf("出队成功,出队的元素值为:%d\n",val);
}
else
{
	printf("队列为空!\n");
}
	
return 0;

}

//出队
bool dequeue(PQUEUE pQ, int * pVal)
{
if(empty(pQ))
return false;
else
{
*pVal = pQ->pBase[pQ->front];
pQ->front = (pQ->front+1)%6;//front取余于队列长度,用来循环数组,

	return true;
}

}

//输出
void traverse_queue(PQUEUE pQ)
{

if(empty(pQ))
{
	printf("队列为空!\n");
}
else
{
	int p = pQ->front;
	
	while(p != pQ->rear)
	{
		printf("%d,", pQ->pBase[p]);
		p = (p+1) % 6;
		
	}
	printf("\n");
}

return;

}

//判断队列是否为满,数组中设定一定不存放有效数据的元素,
//当入队时,在rear与front相邻时,队列为满
bool full_queue(PQUEUE pQ)
{
if(pQ->front == (pQ->rear+1)%6)//rear取余于队列长度,用来循环数组,
{
return true;
}

else
{
	return false;
}
;

}

//判断队列是否为空
bool empty(PQUEUE pQ)
{
if(pQ->front == pQ->rear)
return true;
else
return false;
}

//入队
bool en_queue(PQUEUE pQ,int val)
{
if(full_queue(pQ))

{
	return false;
}

else
{
	pQ->pBase[pQ->rear] = val;
	pQ->rear = (pQ->rear+1) % 6;//rear取余于队列长度,用来循环数组,
	
	return true;
}

}

//初始化
void init_queue(PQUEUE pQ)
{

pQ->pBase  = (int *)malloc(sizeof(int) * 6);//数组长度为6个元素
pQ->front = 0;
pQ->rear = 0;
return;

}

数据结构--队列

标签:des   size   includes   数据   return   --   lse   type   empty   

原文地址:https://www.cnblogs.com/jtpw/p/13549777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!