我是靠谱客的博主 欢呼手机,最近开发中收集的这篇文章主要介绍循环队列与普通队列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

普通队列
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MAXSIZE 20 
//普通队列
 
typedef struct{
	int data[MAXSIZE];
	int front;	//队头 
	int rear;	//队尾 
}Queue;

//入队
int enQueue(Queue* q, int e){
	if(q->rear>=MAXSIZE && q->front<=q->rear){
		printf("n满n");
		return 0;
	}
	q->data[q->rear] = e;
	q->rear++;
	return 1;
} 

//出队 
int deQueue(Queue* q){
	int t;
	if(q->front == q->rear){
		printf("n空n");
		return 0;
	}
	t = q->data[q->front];
	printf("%d  ",t);
	q->front++;
	return 1;
} 
//遍历
void print_queue(Queue* q){
	for(int i=q->front; i<q->rear; i++){
		printf("%d   ",q->data[i]);
	}
	printf("n");
} 

int main(){
	
	Queue q;
	q.front = q.rear = 0;
	for(int i=1; i<=6; i++){
		enQueue(&q,i);
	}
	
	for(int i=1; i<=7; i++){	//空了之后,头和尾相等
		deQueue(&q);
	}

	return 0;
}
循环队列
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MAXSIZE 20

//循环队列
typedef struct{
	int data[MAXSIZE];
	int front;
	int rear;
}Queue; 

//入队
int enQueue(Queue* q,int e){
	//牺牲掉一个空间来表示队满
	if((q->rear+1)%MAXSIZE == q->front){
		return 0;
	} 
	q->data[q->rear] = e;
	q->rear = (q->rear+1)%MAXSIZE;
	return 1;
} 

//出队
int deQueue(Queue* q){
	//判断空 
	if(q->front == q->rear){
		printf("n空n");
		return 0;
	}
	int t = q->data[q->front];
	printf("%d  ",t);
	q->front = (q->front+1)%MAXSIZE;
	return 1;
} 

int main(){
	Queue q;
	q.front = q.rear = 0;
	
	for(int i=1; i<=6; i++){
		enQueue(&q,i);
	}
	
	for(int i=1; i<=6; i++){
		deQueue(&q);
	}
	return 0;
}


最后

以上就是欢呼手机为你收集整理的循环队列与普通队列的全部内容,希望文章能够帮你解决循环队列与普通队列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部