//
// Created by Polaris on 2022/4/27.
//
#include <stdio.h>
#include <stdlib.h>
#define DataType int
#define MAXSIZE 100
/*
* 线性循环队列定义
*/
typedef struct {
DataType *data;
int front;
int rear;
int size;
}LinearCircularQueue;
/*
* 初始化线性循环队列
*/
LinearCircularQueue* initQueue(int size) {
LinearCircularQueue *queue = (LinearCircularQueue*) malloc(sizeof(LinearCircularQueue));
queue -> data = (int*)malloc(sizeof(int)*size);
queue -> front = 0;
queue -> rear = 0;
queue -> size = size;
}
int getSize(LinearCircularQueue *queue) {
if(queue == NULL) {
return -1;
}
return queue -> size;
}
int isEmpty(LinearCircularQueue *queue) {
if(queue == NULL) {
return -1;
}
return queue -> front == queue -> rear ? 1 : 0;
}
int isFull(LinearCircularQueue *queue) {
if(queue == NULL) {
return -1;
}
return (queue -> rear + 1) % (queue -> size) == queue -> front ? 1 : 0;
}
int push(LinearCircularQueue *queue, DataType data) {
if(isFull(queue)) {
return -1;
}
queue -> data[queue -> rear] = data;
queue -> rear = (queue -> rear + 1) % (queue -> size);
return 1;
}
DataType pop(LinearCircularQueue *queue) {
if(isEmpty(queue)) {
return -1;
}
DataType data = queue -> data[queue -> front];
queue -> front = (queue -> front + 1) % (queue -> size);
return data;
}
DataType getFront(LinearCircularQueue *queue) {
return queue -> data[queue -> front];
}
DataType getRear(LinearCircularQueue *queue) {
return queue -> data[queue -> rear];
}
C语言 数据结构 线性循环队列 基本操作代码
最新推荐文章于 2023-10-27 18:04:49 发布