循环队列
main.c
#include<stdio.h>
#include<stdlib.h>
#include "./03_func.h"
int main(){
Seq* sq = CreateSeq();
Insert_Seq(sq,10);
Insert_Seq(sq,20);
Insert_Seq(sq,30);
Insert_Seq(sq,40);
Display_Seq(sq);
datatype num;
num = Output_Seq(sq);
printf("%d\n ",num);
Display_Seq(sq);
num = Output_Seq(sq);
printf("%d\n ",num);
Display_Seq(sq);
}
func.c
#include<stdio.h>
#include<stdlib.h>
#include "./03_func.h"
//创建队列
Seq* CreateSeq(){
Seq* sq = (Seq*)malloc(sizeof(Seq));
if(NULL == sq){
printf("创建队列失败");
return NULL;
}
sq->fron = sq->rear= 0;
return sq;
}
//入队
void Insert_Seq(Seq* sq,datatype num){
if(isFull_Seq(sq) == 1){
printf("队列已满,入队失败");
return;
}
sq->data[sq->rear] = num;
//更新rear
sq->rear = (sq->rear+1)%N;
return;
}
//出队
datatype Output_Seq(Seq* sq){
if(sq->rear == sq->fron)
return (datatype)-1;
datatype num = sq->data[sq->fron];
sq->fron = (sq->fron+1)%N;
return num;
}
//显示
void Display_Seq(Seq* sq){
for(int i = sq->fron; i!=sq->rear; i=(i+1)%N)
printf("%d ",sq->data[i]);
putchar(10);
return ;
}
//判满
int isFull_Seq(Seq* sq){
return (sq->rear+1) % N == sq->fron ? 1:0;
}
func.h
#ifndef __func__
#define __func__
#define N 10
typedef int datatype;
typedef struct {
datatype data[N];
int fron;
int rear;
} Seq;
Seq* CreateSeq();
datatype Output_Seq(Seq* sq);
void Display_Seq(Seq* sq);
int isFull_Seq(Seq* sq);
void Insert_Seq(Seq* sq,datatype num);
#endif