当前位置: 首页> 健康> 养生 > 网络代理端口_软件开发模型及特点_拼多多关键词排名查询_百度打开百度搜索

网络代理端口_软件开发模型及特点_拼多多关键词排名查询_百度打开百度搜索

时间:2025/7/9 16:17:15来源:https://blog.csdn.net/bitenum/article/details/145968501 浏览次数:1次
网络代理端口_软件开发模型及特点_拼多多关键词排名查询_百度打开百度搜索

零.导言

        和上次学习的栈一样,队列是一种数据结构,在后续的学习中可能经常使用,因此我们今天就来学习如何实现队列,以更好地使用它。


一.队列的模拟实现

        在类(class)Queue 中,包含成员变量和成员函数;同时,队列的实现要相对复杂一些。

我们先看代码:

#include<iostream>
#include<cassert>using namespace std;typedef int QueueDataType;class Queue
{
public:Queue(){_phead = _ptail = nullptr;_size = 0;}~Queue(){QueueNode* pcur = _phead;while (pcur){QueueNode* next = pcur->_next;free(pcur);pcur = next;}_phead = _ptail = nullptr;_size = 0;}void Push(QueueDataType n){QueueNode* newnode = (QueueNode*)malloc(sizeof(QueueNode));if (newnode == nullptr){perror("malloc fail!");exit(1);}newnode->_val = n;newnode->_next = nullptr;if (_phead == nullptr){_phead = _ptail = newnode;}else{_ptail->_next = newnode;_ptail = _ptail->_next;}_size++;}bool isEmpty(){return _phead == nullptr;}void Pop(){assert(!isEmpty());if (_phead == _ptail){free(_phead);_phead = _ptail = nullptr;}else{QueueNode* next = _phead->_next;free(_phead);_phead = next;}_size--;}QueueDataType Front(){assert(!isEmpty());return _phead->_val;}QueueDataType Back(){assert(!isEmpty());return _ptail->_val;}int Size(){return _size;}private:class QueueNode{friend class Queue;QueueDataType _val;QueueNode* _next;};QueueNode* _phead;QueueNode* _ptail;int _size;
};

二.队列的相关解释

        如上:队列的实现需要定义两个结构体,第一是 QueueNode ,是链表的节点类型;第二是 Queue ,指向队列的头和尾。

        其中:构造函数和析构函数很容易辨认,Push 是向队尾插入数据,Pop 是从队头出数据,Front 是取队头数据,Back 是取队尾数据,Size 是返回有效元素个数。


三.队列的特性

        队列的特性是:所有数据都只能从队尾入,从队头出。和堆的形式相反,先进先出。运用这个特性,我们可以便捷的解决堆不好解决的问题。


四.相关链接

        【C++/数据结构】栈-CSDN博客


关键字:网络代理端口_软件开发模型及特点_拼多多关键词排名查询_百度打开百度搜索

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: