#include "stdio.h"
#include "stdlib.h"
#include "stdbool.h"
#define MAXSIZE 50
typedef int DataType;
typedef struct {
DataType data[MAXSIZE];
int front; // 指向队头
int rear; // 指向队尾的后一个元素
}SqQueue;
bool queueEmpty(SqQueue *queue);
bool enQueue(SqQueue *queue, int i);
DataType getHead(SqQueue* queue);
DataType deQueue(SqQueue *queue);
int length(SqQueue *queue);
int main() {
SqQueue sqQueue = {{0}, 0, 0};
SqQueue* pQueue = &sqQueue;
length(pQueue);
bool a = queueEmpty(pQueue);
printf("队列长度:%d\n", length(pQueue));
printf("入队:5、4、3\n");
enQueue(pQueue, 5); // 入队
enQueue(pQueue, 4);
enQueue(pQueue, 3);
printf("队列长度:%d\n", length(pQueue));
printf("出队:%d\n", deQueue(pQueue));
printf("队头元素:%d\n", getHead(pQueue));
return 0;
}
/**
* 返回队列长度
* @param queue
* @return
*/
int length(SqQueue *queue) {
return queue->rear - queue->front;
}
/**
* 获取队首值
* @param queue
* @return
*/
DataType getHead(SqQueue* queue) {
if (queueEmpty(queue)) {
return -1;
}
return queue->data[queue->front];
}
/**
* 出队
* @param queue
* @return
*/
DataType deQueue(SqQueue *queue) {
if (queueEmpty(queue)) {
return -1;
}
// 返回出队的值,注意front++
return queue->data[queue->front++];
}
/**
* 入队
* @param queue
* @param value
* @return
*/
bool enQueue(SqQueue *queue, int value) {
if (queue->rear == SIZE_MAX) { // 队列已满
return false;
}
queue->data[queue->rear++] = value;
return true;
}
/**
* 判断对空
* @param queue
* @return
*/
bool queueEmpty(SqQueue *queue) {
return queue->front == queue->rear;
}
数据结构------队列(C/C++)
最新推荐文章于 2024-07-25 08:55:54 发布