html网站开发工具下载,商务网站设计与制作,ps最好用的素材网站,wordpress置顶代码#x1f308;个人主页#xff1a;羽晨同学
#x1f4ab;个人格言:“成为自己未来的主人~” 队列
队列的概念及结构
队列#xff1a;只允许在一端进行插入数据操作#xff0c;在另一端进行删除删除数据操作的特殊线性表#xff0c;队列具有先进先出FIFO#xff0c;…
个人主页羽晨同学
个人格言:“成为自己未来的主人~” 队列
队列的概念及结构
队列只允许在一端进行插入数据操作在另一端进行删除删除数据操作的特殊线性表队列具有先进先出FIFO进行插入操作的一端称为队尾进行删除操作的一端称为队头 队列的实现
队列也可以数组和链表的结构实现使用链表的结构实现更优一点因为如果使用数组的结构出队列在数组头上出数据效率会比较低
#pragma once
#includestdio.h
#includestdbool.h
#includeassert.htypedef int QDataType;
typedef struct QueueNode
{int val;struct QueueNode* next;
}QNode;typedef struct Queue
{QNode* phead;QNode* ptail;int size;
}Queue;void QueueInit(Queue* pq);
void QueueDestroy(Queue* pq);
//入队列
void QueuePush(Queue* pq, QDataType x);
//出队列
void QueuePop(Queue* pq);QDataType QueueFront(Queue*pq);
QDataType QueueBack(Queue* pq);
bool QueueEmpth(Queue* pq);
int QueueSize(Queue* pq);#define _CRT_SECURE_NO_WARNINGS
#includecode.4.5.Queue.h
void QueueInit(Queue* pq) {assert(pq);pq-phead NULL;pq-ptail NULL;pq-size 0;
}void QueueDestroy(Queue* pq)
{assert(pq);QNode* cur pq-phead;while (cur) {QNode* next cur-next;free(cur);cur next;}pq-phead pq-ptail NULL;pq-size 0;
}//入队列
void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL) {perror(malloc fail);return;}newnode-val x;newnode-next NULL;if(pq-ptail){pq-ptail-next newnode;pq-ptail newnode;}pq-size;
}
void QueuePop(Queue* pq)
{assert(pq);assert(pq-phead ! NULL);if (pq-phead-next NULL) {free(pq-phead);pq-phead pq-ptail NULL;}else{QNode* next pq-phead-next;free(pq-phead);pq-phead next;}pq-size--;
}QDataType QueueFront(Queue* pq) {assert(pq);assert(pq-phead ! NULL);return pq-phead-val;
}
QDataType QueueBack(Queue* pq) {assert(pq);assert(pq-ptail ! NULL);return pq-ptail-val;
}
bool QueueEmpth(Queue* pq)
{assert(pq);return pq-size 0;
}
int QueueSize(Queue* pq)
{assert(pq);return pq-size;
}
#define _CRT_SECURE_NO_WARNINGS
#includecode.4.5.stack.h
//int main() {
// ST s;
// STInit(s);
// STPush(s,1);
// STPush(s,2);
// STPush(s,3);
// int top STTop(s);
// printf(%d, top);
//
// STDestroy(s);
// return 0;
//}
#includecode.4.5.Queue.h
int main()
{Queue q;QueueInit(q);QueuePush(q, 1);QueuePush(q, 2);printf(%d , QueueFront(q));QueuePop(q);QueuePush(q, 3);QueuePush(q, 4);while (!QueueEmpth(q)){printf(%d , QueueFront(q));QueuePop(q);}QueueDestroy(q);return 0;
}