概述
普通队列
#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;
}
最后
以上就是欢呼手机为你收集整理的循环队列与普通队列的全部内容,希望文章能够帮你解决循环队列与普通队列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复