人才市场官方网站,为什么大家用wordpress建网站,中山做网站多少钱,wordpress 破解后台文章目录 一、队列的结构和概念二、队列的实现三、队列的实现函数四、队列的思维导图 一、队列的结构和概念
什么是队列#xff1f; 队列就是只允许在一端进行插入数据操作#xff0c;在另一端进行删除数据操作的特殊线性表#xff0c;队列具有先进先出 如上图所示#x… 文章目录 一、队列的结构和概念二、队列的实现三、队列的实现函数四、队列的思维导图 一、队列的结构和概念
什么是队列 队列就是只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出 如上图所示第一个人先来排在第一位就可以第一个走也叫先进先出 但是想要近来就只能排队在后面等候 二、队列的实现
队列和栈一样都可以用链表和数组实现但是对于队列来说链表更好因为用数组在对头出数据的话效率太低。
三、队列的实现函数 1.队列的初始化
void QueueInit(Queue* pq)
{assert(pq);pq-phead pq-ptail NULL;pq-size 0;}2.队列的销毁 void QueueDestroy(Queue* pq)
{assert(pq);QueueNode* cur pq-phead;while (cur){cur pq-phead-next;free(pq-phead);pq-phead cur;}pq-phead pq-ptail NULL;pq-size 0;
}链表的销毁需要一个一个节点的销毁无法直接销毁 3.队列的判空
bool QueueEmpty(Queue* pq)
{assert(pq);return pq-size 0;
}
4.队列的插入
void QueuePush(Queue* pq, QDataType x)
{assert(pq);QueueNode* newnode (QueueNode*)malloc(sizeof(QueueNode));if (newnode NULL){perror(malloc fail);return;}newnode-val x;newnode-next NULL;if (pq-ptail){pq-ptail-next newnode;pq-ptail newnode;}else{pq-phead pq-ptail newnode;}pq-size;
}每一个节点的开辟用malloc就行这点与数组不一样数组是realloc扩容 5.队列的删除
void QueuePop(Queue* pq)
{assert(pq);assert(pq-phead!NULL);if (pq-phead-next NULL){free(pq-phead);pq-phead pq-ptail NULL;}else{QueueNode* next pq-phead-next;free(pq-phead);pq-phead next;}pq-size--;}
6.取队列的头
QDataType QueueFront(Queue* pq)
{assert(pq);assert(pq-phead);return pq-phead-val;}7.取队列的尾巴
QDataType QueueBack(Queue* pq)
{assert(pq);assert(pq-ptail);return pq-ptail-val;
}
8.队列的长度
int QueueSize(Queue* pq)
{assert(pq);return pq-size;
}
四、队列的思维导图 先赞后看养成习惯^ _ ^3 ❤️ ❤️ ❤️ 码字不易大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦 如有错误请您指正批评!