当前位置: 首页 > news >正文

安徽专业网站建设创新传奇网

安徽专业网站建设创新,传奇网,如何拷贝网站代码,网络公司取什么名字好摘要#xff1a; it人员无论是使用哪种高级语言开发东东#xff0c;想要更高效有层次的开发程序的话都躲不开三件套#xff1a;数据结构#xff0c;算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合#xff0c;即带“结构”的数据元素的集合 it人员无论是使用哪种高级语言开发东东想要更高效有层次的开发程序的话都躲不开三件套数据结构算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合即带“结构”的数据元素的集合“结构”就是指数据元素之间存在的关系分为逻辑结构和存储结构。 此系列专注讲解数据结构数组、链表、队列、栈、树、哈希表、图通过介绍概念以及提及一些可能适用的场景并以C代码简易实现多方面认识数据结构最后为避免重复造轮子会浅提对应的STL容器。本文介绍的是队Queue。 开发环境VScodeC17 关键词 C数据结构队列Queue 声明本文作者原创转载请附上文章出处与本文链接。 文章目录 摘要正文介绍特性应用 代码实现对应STL 推荐阅读 正文 介绍 队列Queue是一种常见的数据结构它遵循先入先出FIFOFirst In First Out的原则。队列中的元素按照它们进入队列的顺序排列并且只有队首的元素可以被删除队尾的元素可以被添加。 队列也有两种存储表示方法顺序存储用数组实现和链式存储用链表实现顺序存储常见的就是环形队列初始化时必须指定队列容量大小普通队列则基于链表。 特性 先进先出队列的基本操作是遵循FIFO先进先出原则的。这意味着最早添加到队列中的元素将是最早被移除的。这种特性使得队列在处理需要按顺序处理的元素时非常有用比如任务调度、打印作业等。 受限的访问队列只允许在两端进行操作。在队列的一端称为“队尾”或“后端”添加元素而在另一端称为“队头”或“前端”移除元素。这种特性确保了队列中的元素按照它们被添加的顺序进行处理。 应用 队列在多种场景中都有应用包括 任务调度在计算机系统中多个任务可能同时请求CPU资源。使用队列可以确保任务按照它们到达的顺序得到处理。打印机作业队列当一个用户提交一个打印作业时它会被添加到打印队列中。打印机按照作业进入队列的顺序打印它们。网络数据包处理在网络通信中接收到的数据包需要按照它们到达的顺序进行处理。队列可以帮助管理这些数据包确保它们按照正确的顺序被处理。图形界面事件处理在图形用户界面GUI中用户事件如鼠标点击或键盘输入被添加到事件队列中。事件处理程序按照事件进入队列的顺序处理它们。 代码实现 #cqueue.h #ifndef CQUEUE_H #define CQUEUE_H #include iostream using namespace std;// 队链节点 templateclass T class CQueueNode { public:CQueueNode(T t) :data(t), next(NULL) {}~CQueueNode() { next NULL; }CQueueNode(const CQueueNode node){if (this node){return;}*this node;}CQueueNode operator(const CQueueNode node){if (this node){return *this;}this-data node.data;this-next node.next;return *this;}public:T data;CQueueNode *next; };// 普通队列实现基于链表 templateclass T class CQueue { public:CQueue() :head(NULL), tail(NULL), node(NULL), m_iSize(0) {}~CQueue(){delete head;head NULL;delete tail;tail NULL;delete node;node NULL;}int size(); // 获取队内成员个数 bool empty(); // 判断是否为空队列void push(T t); // 队尾入队T pop(); // 队首出队T front(); // 返回队首T back(); // 返回队尾void traverse(); // 打印整个队列private:CQueueNodeT* head;CQueueNodeT* tail;CQueueNodeT* node;int m_iSize; };templateclass T int CQueueT::size() {return m_iSize; }templateclass T bool CQueueT::empty() {return 0 m_iSize; }templateclass T void CQueueT::push(T t) {node new CQueueNodeT(t);if (head NULL){head tail node;}else{tail-next node;tail node;}m_iSize; }templateclass T T CQueueT::pop() {if (empty()){throw empty queue.;}node head;head head-next;m_iSize--;return node-data; }templateclass T T CQueueT::front() {if (empty()){throw empty queue.;}return head-data; }templateclass T T CQueueT::back() {if (empty()){throw empty queue.;}return tail-data; }templateclass T void CQueueT::traverse() {CQueueNodeT *node head;while (node ! NULL){cout node-data ;node node-next;}cout endl; }#endif // !CQUEUE_H#cqueue.cpp #include cqueue.h using namespace std;int main(int argc, char**argv) {CQueuechar queue;queue.push(h);queue.push(e);queue.push(l);queue.push(l);queue.push(o);queue.push( );queue.push(w);queue.push(o);queue.push(r);queue.push(l);queue.push(d);queue.traverse();cout queue.front() endl;cout queue.back() endl;char c queue.pop();cout c endl;queue.traverse();return 0; }对应STL queue 普通队列。其原理是先进先出FIFO只有队头和队尾可以被访问故不可有遍历行为默认也为deque双端队列 deque 双端队列。支持头插、删尾插、删随机访问较vector容器来说慢,但对于首尾的数据操作比较方便 推荐阅读 C/C专栏https://blog.csdn.net/weixin_45068267/category_12268204.html 内含其它数据结构及对应STL容器使用
http://www.pierceye.com/news/705743/

相关文章:

  • 四川网站建设公司 登录六盘水市诚信网站建设公司
  • 优秀包装设计网站软件工程师工作
  • 舟山建设信息港网站泉州百度网络推广
  • 网站流量宝镜像别人网站做排名的好处
  • 如何学习网站建设app网络营销方案设计题
  • 高端品牌网站建设明细报价报腾讯云 win wordpress
  • 云南建设网站网站建设公司现在还挣钱吗
  • 濮阳微信网站建设没有数据库的网站
  • 网站开发与没计是做什么贵阳查房子备案的网站
  • 做网站学不需要做后台管理系统mean网站开发
  • 网页网站公司如何做备份游戏型网站开发
  • 网站排名必做阶段性seo策略软文写作是什么意思
  • 网站域名商渭南哪家公司可以做网站
  • 医院网站asp源码加强机关网站建设
  • wordpress建手机站网站建设规划大纲
  • 同个主体新增网站备案施工企业副总经理竞聘
  • 视频网站后台设计针式个人知识库管理系统
  • 外围网站开发网页制作对联
  • 深圳福永网站建设网站多个用户怎样建设
  • 百度网站排名怎么提高wordpress页面全屏的插件
  • 企业网站优化方式wordpress 外链播放器
  • 设计衣服的网站久久诗歌网
  • 上海网站营销it运维网
  • 一起做网店广州站怎么推广软件让别人下载
  • 王晴儿网站建设方案wordpress媒体库 ftp
  • 乡村建设网站自己的网站做防伪码
  • 企业网站托管新乡企业网站建设
  • 移动网站开发课程设计莱芜四中网站
  • 做论坛网站赚钱吗做电影网站要几G空间的
  • 网站建设综合实训心得intitle 网站建设