1. 程式人生 > >迴圈佇列的順序儲存

迴圈佇列的順序儲存

  1. 儲存結構
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 3
#define ElementType int
typedef struct node
{
	ElementType data[MAXSIZE];
	int front;//隊頭指標,永遠指向第一個元素的前一個	
	int rear;//隊尾指標,指向最後一個元素 
}Queue;
  1. 建立空佇列
Queue* CreatQueue()
{
	Queue* q=(Queue*)malloc(sizeof(node)
); q->front=q->rear=MAXSIZE-1; return q; }
  1. 判空
bool IsEmpty(Queue* q)
{
	if(q->front==q->rear)	return true;
	return false;
}
  1. 判滿
bool IsFull(Queue* q)
{
	if((q->rear+1)%MAXSIZE==q->front)	return true;
	return false;
}
  1. 入隊
void InQueue(Queue* q,ElementType value)
{ if(IsFull(q)==true){ printf("隊滿,不能入隊!\n"); return; }else{ if(q->rear==(MAXSIZE-1)) q->rear=-1; q->rear++; q->data[q->rear]=value; } }
  1. 出隊
ElementType OutQueue(Queue* q)
{
	if(IsEmpty(q)==true){
		printf("棧空!");
		return 0; 
	}else{
		if(q->front==(MAXSIZE-
1)) q->front=-1; q->front++; return q->data[q->front]; } }