欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构 顺序队列 循环队列 基本操作

程序员文章站 2024-03-18 12:12:52
...

顺序队列基本操作: 

#define MAXSIZE 1000

struct queue{
	int front ,rear;//表示头指针和 尾指针
	int data[MAXSIZE];   //存储数据的数组
}

void Initqueue(queue &q){  //初始化队列
	q.front=0;
	q.rear;
}

bool Empty(queue &q){     //判断队列是否为空
	return q.front==q.rear;
}

bool Full(queue &q){      //判读队列是否为满
	return q.rear==MAXSIZE;
}

bool push(queue &q,int data){   //入队操作
	if(Full(q))          //如果队列满则无法进行
		return 0;
	else{
		q.data[rear++]=data;
		return 1;
	}

}

void Pop(queue &q){     //c出队操作
	q.front++;
}


bool gethead(queue &q,int &data){ //取队头元素

	if(Empty(q))
		return 0;
	data=q.data[front];
	return 1;
}

循环队列基本操作(顺序队列的空间优化):

#define MAXSIZE 1000

struct cyclequeue{
	int front ,rear;//表示头指针和 尾指针
	int data[MAXSIZE];   //存储数据的数组
}

void Initqueue(cyclequeue &q){  //c初始化队列
	q.front=0;
	q.rear;
}

bool Empty(cyclequeue &q){     //判断队列是否为空
	return q.front==q.rear;
}

bool Full(cyclequeue &q){      //判读队列是否为满
	return (q.rear+1)%MAXSIZE==q.front;
}

bool push(cyclequeue &q,int data){   //入队操作
	if(Full(q))          //如果队列满则无法进行
		return 0;
	else{
		q.data[rear]=data;
		q.rear=(q.rear+1)%MAXSIZE;
		return 1;
	}

}

bool Pop(cyclequeue &q){     //c出队操作
	if(Empty(q))            
		return 0;
	q.front=(q.front+1)%MAXSIZE;
	return 1;
}


bool gethead(cyclequeue &q,int &data){ //取队头元素

	if(Empty(q))
		return 0;
	data=q.data[front];
	return 1;
}

 

相关标签: 数据结构 队列

上一篇: 线性结构:队列

下一篇: