C++队列概念及结构是啥,怎样实现队列?
导读:这篇文章我们来了解C++队列的相关内容,下文给大家介绍了队列概念和结构,以及怎样实现队列,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧! 1. 队列的概念及结构 队列:只允许在一端进行插入数据操作,...
这篇文章我们来了解C++队列的相关内容,下文给大家介绍了队列概念和结构,以及怎样实现队列,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
1. 队列的概念及结构
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头
2. 队列的实现
2.1 queue.h
#includestdio.h> #includestdbool.h> #includeassert.h> #includemalloc.h> typedef int QDataType; typedef struct QueueNode { struct QueueNode*next; QDataType data; } QueueNode; typedef struct Queue { QueueNode *head; QueueNode *tail; } Queue; void QueueInit(Queue *pq); void QueueDestory(Queue *pq); void QueuePush(Queue *pq,QDataType x); void QueuePop(Queue *pq); QDataType QueueFront(Queue *pq); QDataType QueueBack(Queue *pq); bool QueueEmpty(Queue *pq); int QueueSize(Queue *pq);
2.2 queue.c
#include"queue.h" void QueueInit(Queue *pq) { assert(pq); pq-> head = pq-> tail = NULL; } void QueueDestory(Queue *pq) { assert(pq); QueueNode *cur = pq-> head; while (cur) { QueueNode *next = cur-> next; free(cur); cur = next; } pq-> head = pq-> tail = NULL; } void QueuePush(Queue *pq, QDataType x) { assert(pq); QueueNode *newnode = (QueueNode*)malloc(sizeof(QueueNode)); if (newnode == NULL) { printf("malloc fail\n"); exit(-1); } newnode-> data = x; newnode-> next = NULL; if (pq-> tail == NULL) { pq-> head = pq-> tail = newnode; } else { pq-> tail-> next = newnode; pq-> tail = newnode; } } void QueuePop(Queue *pq) { assert(pq); assert(!QueueEmpty(pq)); if (pq-> head-> next == NULL) { free(pq-> head); pq-> head = pq-> tail = NULL; } else { QueueNode *next = pq-> head-> next; free(pq-> head); pq-> head = next; } } QDataType QueueFront(Queue *pq) { assert(pq); assert(!QueueEmpty(pq)); return pq-> head-> data; } QDataType QueueBack(Queue *pq) { assert(pq); assert(!QueueEmpty(pq)); return pq-> tail-> data; } bool QueueEmpty(Queue *pq) { assert(pq); return pq-> head == NULL; } int QueueSize(Queue *pq) { int size = 0; QueueNode *cur = pq-> head; while (cur) { QueueNode *next = cur-> next; ++size; cur = cur-> next; } return size; }
2.3 test.c
#include"queue.h" void TestOne() { Queue q; QueueInit(& q); QueuePush(& q, 1); QueuePush(& q, 2); QueuePush(& q, 3); QueuePush(& q, 4); while (!QueueEmpty(& q)) { printf("%d ", QueueFront(& q)); QueuePop(& q); } printf("\n"); QueueDestory(& q); } int main() { TestOne(); return 0; }
总结
现在大家对于C++队列概念、结构和实现应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多C++队列的内容,大家可以关注网络其它相关文章。
文本转载自PHP中文网
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C++队列概念及结构是啥,怎样实现队列?
本文地址: https://pptw.com/jishu/655055.html