首页 > 编程知识 正文

数据结构queue使用方法,队列queue的用法

时间:2023-05-04 23:08:58 阅读:272565 作者:2771

数据结构:队列quene的实现及功能

队列是数据结构的一种,数据存储方式为先进先出。
什么是队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。(摘自百度百科)
队列的实现:

typedef int QT;typedef struct Queue{ QT *base; size_t cap; size_t first; size_t size;}Queue;

功能实现:

int queue_init(Queue *queue,size_t cap){//队列初始化(创建) queue->base = calloc(cap,sizeof(QT)); if(queue->base == NULL){ return 0; } queue->cap = cap; queue->first = 0; queue->size = 0; return 1;}int queue_is_empty(Queue *queue){//队列是否为空 return queue->size == 0;}int queue_is_full(Queue *queue){//队列是否为满 return queue->size == queue->cap;}QT queue_pop(Queue *queue){//入队操作 if(queue_is_empty(queue)){ return NULL; } if(queue->first == queue->cap){ queue->first = 0; } --queue->size; return *(queue->base+ queue->first++);}QT queue_top(Queue *queue){//获取队顶元素 if(queue_is_empty(queue)){ return NULL; } return *(queue->base + (queue->first+queue->size-1)%queue->cap);}void queue_push(Queue *queue,QT data){//出队操作 if(!queue_is_full(queue)){ *(queue->base+(queue->first+queue->size++)%queue->cap) = data; }}void queue_destroy(Queue *queue){//销毁队列 free(queue->base);}void queue_clear(Queue *queue){//队列清空 queue->size = 0; queue->first = 0;}

队列也很简单

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。