数据结构环形队列学习(c语言)
- 实现效果
- 效果模型描述
代码设置队列长度为5,数组实际大小为6(队列长度加1)
黄色方格是队列头,灰色是未被使用内存,蓝色是队列元素
Example1: 当队列添加满元素时(此时队列元素为5)
Example2: 删除Example1中队列3个元素(此时队列元素为2)
Example3: 在Example2队列基础上增加3个元素(此时队列长度为5)
Example4: 在Example3队列基础上删除3个元素(此时队列长度为2)
- 代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
//Queue struct
typedef struct
{
long unsigned head;
long unsigned tail;
size_t arr_len;
int *queue;
} Queue;
//Create an int array as Queue.Initial.Parameter QueueLen is length of Queue
void NewCommonQueue(Queue *q, size_t QueueLen);
//Add a element for Queue.
void addElement(Queue *q, int elem);
//Delete a element of Queue.
int popElement(Queue *q);
//Show Queue.
void showQueue(Queue *q);
//Judge if Queue is empty.
int isEmpty(Queue *q);
//Judge if Queue is full.
int isFull(Queue *q);
//Get the element quality of Queue.
size_t getQueLen(Queue *q);
//Delete all element of Queue.
void clearQueue(Queue *q);
int main(void)
{
Queue q;
//Example1
NewCommonQueue(&q, 5);
addElement(&q, 1);
addElement(&q, 2);
addElement(&q, 3);
addElement(&q, 4);
addElement(&q