推广自身网站,视觉设计的网站和app,河北省建设执业注册中心网站,.net网站开发文档1.队列#xff08;先进先出#xff09;
队列也是一种受限制的线性结构 它只能在一端添加元素#xff0c;在另一端访问#xff0c;删除元素 #xff08;队首插入#xff0c;队尾删除#xff09; 因为链表实现没有数组实现快#xff0c;所以队列大多数是用数组实现的 q…1.队列先进先出
队列也是一种受限制的线性结构 它只能在一端添加元素在另一端访问删除元素 队首插入队尾删除 因为链表实现没有数组实现快所以队列大多数是用数组实现的 queue.h
#pragma once
#includestdio.h
#includestdbool.h
#includestdlib.h
#define E int
#define CAPACITY 10
typedef struct {E elements[CAPACITY];//数组int fornt;//队首int rear;//队尾int size;//长度
}Queue;Queue* queue_create();
void queue_destroy(Queue* q);bool is_empty(Queue* q);
bool is_full(Queue* q);
bool enqueue(Queue* q, E element);
E dequeue(Queue* q);
E peek(Queue* q);queue.c
#define _CRT_SECURE_NO_WARNINGS 1
#includequeue.h
Queue* queue_create() {return calloc(1, sizeof(Queue));
}
void queue_destroy(Queue* q) {free(q);
}bool is_empty(Queue* q) {return q-size 0;
}
bool is_full(Queue* q) {return q-size CAPACITY;
}
bool enqueue(Queue* q, E element) {if (is_full(q)) {printf(error:Queue is full\n);exit(1);}q-elements[q-rear] element;q-rear (q-rear 1) % CAPACITY;q-size;return true;
}
E dequeue(Queue* q) {if (is_empty(q)) {printf(error:Queue is emppty\n);exit(1);}E ele q-elements[q-fornt];q-fornt (q-fornt 1) % CAPACITY;q-size--;return ele;
}
E peek(Queue* q) {if (is_empty(q)) {printf(error: Queue is empty\n);exit(1);}return q-elements[q-fornt];
}main.c
#define _CRT_SECURE_NO_WARNINGS 1
#includequeue.h
int main() {Queue* q queue_create();if (q NULL) {printf(realloc failed in queue_create()\n);exit(1);}enqueue(q, 1);enqueue(q, 2);enqueue(q, 3);enqueue(q, 4);while (!is_empty(q)) {E ele peek(q);printf(%d , ele);dequeue(q);}printf(\n);return 0;
}