【数据结构练习】基于线性结构的队列
2015-05-26 23:11
405 查看
普通的练习代码
#include <stdio.h> #include <stdlib.h> typedef struct _queue { int *arr; int cap; //容量 int size; //该队列中存储有效数据的个数 int front; //指向队列的前端 int back; //指向队列的后端 }Queue; //创建队列 Queue *queue_create(int cap) { Queue *queue = malloc(sizeof(Queue)); queue->arr = malloc(sizeof(cap) * cap); queue->cap = cap; queue->size = queue->front = queue->back = 0; return queue; } //销毁队列 void queue_destroy(Queue **queue) { free((*queue)->arr); free(*queue); *queue = NULL; } //出队 int queue_pop(Queue *queue) { int data = queue->arr[queue->front]; queue->front = (queue->front + 1) % queue->cap; queue->size--; return data; } //入队 void queue_push(Queue *queue, int data) { queue->arr[queue->back] = data; queue->back = (queue->back + 1) % queue->cap; queue->size++; } //判空 int queue_empty(Queue *queue) { return queue->size == 0; } //判满 int queue_full(Queue *queue) { return queue->size == queue->cap; } //获取队列中有效数据个数 int queue_size(Queue *queue) { return queue->size; } //清空队列 void queue_clear(Queue *queue) { queue->front = queue->back = queue->size = 0; } //测试代码 int main() { int num = 1; Queue *queue = queue_create(5); while (!queue_full(queue)) { queue_push(queue, ++num); } printf("size == %d\n", queue_size(queue)); while (!queue_empty(queue)) { printf("%d ", queue_pop(queue)); } printf("size == %d\n", queue_size(queue)); while (!queue_full(queue)) { queue_push(queue, ++num); } printf("size == %d\n", queue_size(queue)); while (!queue_empty(queue)) { printf("%d ", queue_pop(queue)); } printf("1size == %d\n", queue_size(queue)); queue_destroy(&queue); if (NULL == queue) { printf("queue was freed\n"); } return 0; }
相关文章推荐
- 【数据结构练习】基于链表结构实现的队列
- 数据结构之线性结构---队列 顺序储存
- 数据结构-线性结构-队列
- 数据结构练习 02-线性结构3. Pop Sequence (25)
- 数据结构练习 02-线性结构1. 一元多项式求导 (25)
- 数据结构练习 02-线性结构2. Reversing Linked List (25)
- [数据结构]线性结构——队列
- 【算法和数据结构】_4_线性结构_队列
- 【郝斌数据结构自学笔记】57-59_递归8 _ 汉诺塔_1线性结构总复习 2线性结构和非线性结构关系 3栈队列链表数组之间的关系【重点】
- [数据结构]线性结构——队列
- 【算法和数据结构】_9_线性结构_队列_续_1
- 数据结构全攻略--线性结构不攻自破之栈和队列
- 数据结构_线性结构_栈与队列
- 【算法和数据结构】_9_线性结构_队列_续_1
- 数据结构_线性结构_栈与队列
- 【算法和数据结构】_4_线性结构_队列
- 【数据结构】线性结构:栈&队列&数组
- 数据结构全攻略--线性结构不攻自破之栈和队列
- 数据结构-线性结构之队列
- 数据结构 学习笔记(三):线性结构:堆栈,队列,表达式求值,多项式加法运算