|
根据豆包学习了环形队列,对一些知识点有了大概的认识:
1、结构体指针和结构体变量对于结构体成员的引用方式不同,分别是->和. ,最好用结构体指针操作结构体成员;
2、dequeue函数可以把参数传出去,而且不单能够接收参数
3、定义指针需要注意:定义后需要初始化,除非是函数形参。
代码如下,不知道总结是否准确,细节扣不明白的时候告诫自己不能一口吃成胖子。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_SIZE 100
typedef struct
{
int data[MAX_SIZE];
int front;
int rear;
} CircularQueue;
void initQueue(CircularQueue *Q)
{
Q->front = 0;
Q->rear = 0;
}
bool isEmpty(CircularQueue *Q)
{
if(Q->front == Q->rear)
return true;
else
return false;
}
bool isFull(CircularQueue *Q)
{
// if((Q.rear+1) % MAX_SIZE == Q.front)
// return true;
return ((Q->rear+1) % MAX_SIZE == Q->front);
// return false;
}
bool enqueue(CircularQueue *Q,int x)
{
if(isFull(Q))
{
printf("Queue is full\n");
return false;
}
Q->data[Q->rear] = x;
Q->rear = (Q->rear + 1) % MAX_SIZE;
return true;
}
bool dequeue(CircularQueue *Q,int *x)
{
if(isEmpty(Q))
{
printf("Queue is empty\n");
return false;
}
*x = Q->data[Q->front];
Q->front = (Q->front + 1) %MAX_SIZE;
return true;
}
int main()
{
CircularQueue Q;
initQueue(&Q);
enqueue(&Q,2);
enqueue(&Q,3);
enqueue(&Q,5);
int x;
dequeue(&Q,&x);
printf("Dequeue: %d\n",x);
}
|