赞
踩
队列是一种特殊的线性表,只允许在一端插入数据,在另一端删除数据;插入数据的一端叫做队尾,插入数据的一端叫做队头;其有着先进先出的准则,FIFO(First In First Out)。
初始化
销毁
插入数据
获取队头元素
获取队尾元素
返回队列的元素个数
判断队列是否为空
- // 初始化
- void QueueInit(Queue* qu)
- {
- assert(qu);
-
- qu->phead = qu->ptail = NULL;
- qu->size = 0;
- }
- // 销毁
- void QueueDestory(Queue* qu)
- {
- while (!QueueEmpty(qu))
- {
- QueuePop(qu);
- }
- }
- // 队尾插入
- void QueuePush(Queue* qu, QDateType x)
- {
- assert(qu);
-
- QNode* newnode = (QNode*)malloc(sizeof(QNode));
- if (!newnode)
- {
- perror("malloc mistake");
- return;
- }
- newnode->Date = x;
- newnode->next = NULL;
-
- if (qu->ptail == NULL)
- {
- qu->phead = qu->ptail = newnode;
- }
- else
- {
- qu->ptail->next = newnode;
- qu->ptail = newnode;
- }
- qu->size++;
- }
- // 队头删除
- void QueuePop(Queue* qu)
- {
- assert(qu);
-
- //没有元素的处理
- if (qu->size == 0)
- return;
- //只有一个元素的处理
- if (qu->ptail == qu->phead)
- {
- free(qu->phead);
- qu->phead = qu->ptail = NULL;
- }
- //多个元素的处理方法
- else
- {
- QNode* next = qu->phead->next;
- free(qu->phead);
- qu->phead = next;
- }
- //不要忘了size -1
- qu->size--;
- }
- // 获取队头数据
- QDateType QueueFront(Queue* qu)
- {
- assert(qu);
- return qu->phead->Date;
- }
- // 获取队尾数据
- QDateType QueueBack(Queue* qu)
- {
- assert(qu);
- return qu->ptail->Date;
- }
- // 获取队列长度
- size_t QueueSize(Queue* qu)
- {
- assert(qu);
- return qu->size;
- }
- // 判空
- bool QueueEmpty(Queue* qu)
- {
- assert(qu);
- return qu->size == 0 ? true : false;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。