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

网站链接做app如何制作微信小程序店铺

网站链接做app,如何制作微信小程序店铺,女生读电子商务好就业吗,手机微信网站怎么做的好处一、队列介绍 1、定义 与栈相似,队列是另一种顺序存储元素的线性数据结构。栈与队列的最大差别在于栈是LIFO(后进先出),而队列是FIFO,即先进先出。 2、优缺点及使用场景 优点:先进先出(FIFO&…

一、队列介绍

1、定义

与栈相似,队列是另一种顺序存储元素的线性数据结构。栈与队列的最大差别在于栈是LIFO(后进先出),而队列是FIFO,即先进先出。

2、优缺点及使用场景

优点:先进先出(FIFO)特性、简单明了的接口、任务调度、广度优先搜索(BFS)、消息传递等。

缺点:随机访问困难、固定容量的队列可能导致溢出、不适用于特定的场景、不适用于高并发场景。

使用场景:任务调度、广度优先搜索(BFS)、消息传递等。

3、基本操作

Enqueue()——在队列尾部插入元素

Dequeue()——移除队列头部的元素

isEmpty()——如果队列为空,则返回true

Top()——返回队列的第一个元素

二、常考算法

1、使用队列表示栈

题目:使用队列实现栈的下列操作:

  • push(x) -- 元素 x 入栈
  • pop() -- 移除栈顶元素
  • top() -- 获取栈顶元素
  • empty() -- 返回栈是否为空

思路用两个队列que1和que2实现队列的功能,que2其实完全就是一个备份的作用,把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。 

#include<queue>
#include<iostream>
using namespace std;class StackWithQueue{
public:queue<int> queue1;queue<int> queue2; // 辅助队列,用来备份void push(int data){queue1.push(data);}int pop(){if (queue1.size() == 0) return false;while(queue1.size() > 1){queue2.push(queue1.front());queue1.pop();}int result;result = queue1.front(); // 留下的最后一个元素就是要返回的值queue1.pop();queue1 = queue2;while (!queue2.empty()){ //queue1 = queue2,queue2 = 空 queue2.pop();} return result;}int top(){return queue1.back();}bool empty(){return queue1.empty();}
};int main(){StackWithQueue stack;stack.push(1);stack.push(2);cout << stack.pop() << endl;cout << stack.top() << endl;stack.push(3);cout << stack.top() << endl;stack.push(4);cout << stack.pop() << endl;cout << stack.pop() << endl;cout << stack.pop() << endl;if (stack.empty()){cout << "True";}else cout << "False";   
}
  • 时间复杂度: pop为O(n),其他为O(1)
  • 空间复杂度: O(n)

2、对队列的前k个元素倒序

题目:现有一个整数队列, 需要将其前 k 个元素进行逆置, 剩余的元素保持原来的顺序。

示例:input:[1,2, 3, 4, 5, 6, 7, 8, 9,10], k = 3;

           output:[3, 2, 1, 4, 5, 6, 7, 8, 9, 10]

思路:将前k个元素入栈,再将栈中元素入新队列中,最后将原队列的剩余元素入新队列中。

需要一个新队列用来装结果,需要一个栈用来对元素倒序。(利用栈先进后出,队列先进先出。 )

#include<stack>
#include<queue>
#include<iostream>
using namespace std;queue<int> reverse_k_elements(queue<int> queue, int k){stack<int> st;for(int i = 0; i < k; i++){st.push(queue.front());queue.pop();}while(!st.empty()){queue.push(st.top());st.pop();}for(int j = 0; j < queue.size() - k; j++){queue.push(queue.front());queue.pop();}return queue;
}int main(){queue<int> queue, que;int i = 1;while(i < 11){queue.push(i);i++;}que = reverse_k_elements(queue, 3);while(!que.empty()){cout << que.front() << ',';que.pop();}
}

3、使用队列生成从1到n的二进制数

题目:给定值k, 打印1到k的二进制数。

示例:input:5;output:[1, 10, 11, 100, 101]

思路:利用队列的先进先出性质和二进制数的特点来实现。以下是具体的思路:

使用队列存储二进制数-->循环生成下一个二进制数-->重复直到达到n个二进制数。

#include<queue>
#include<iostream>
using namespace std;queue<string> generate_binaray_numbers(int k){queue<string> queue1, queue2;queue1.push("1");string cur;for(int i = 0; i < k; i++){cur = queue1.front();queue1.pop();queue2.push(cur);queue1.push(cur + "0");queue1.push(cur + "1");}return queue2;
}int main(){queue<string> que;que = generate_binaray_numbers(10);while(!que.empty()){cout << que.front()<<endl;que.pop();}return 0;
}

 

http://www.ds6.com.cn/news/23583.html

相关文章:

  • 旅游网站功能模块软件开发需要学什么
  • 装修计划方案长沙官网seo技巧
  • 开源官网搜索引擎优化怎么做
  • 婚礼摄影网站源码免费写文案神器
  • 邯郸网站建设有哪些太原seo排名外包
  • 如何给wordpress图片切换免费培训seo
  • 德国站有哪些做站外秒杀的网站网站推广方案策划书2000
  • 网站打不开了什么原因google搜索引擎入口网址
  • 做宣传册模板的网站百度一下搜索引擎
  • WordPress连接不上FTPseo诊断分析
  • 响应式网站建设特征seo教程seo入门讲解
  • wordpress适合seo免费推广seo
  • 做快手头像的网站搜索引擎优化心得体会
  • 网站icp备案认证怎么做适合小学生摘抄的新闻2022年
  • 网站后台有显示前台没有百度seo和sem
  • 163网站视频动做正规代运营公司排名
  • 赤峰政府门户网站建设相关制度seo小白入门教学
  • 申请域名后怎么做网站宁波网络推广联系方式
  • 秦皇岛 网站制作2345网址导航电脑版官网
  • wordpress文章合并seo关键词排名软件流量词
  • 洛阳青峰网络公司网站建设百度图片搜索网页版
  • 杭州手机网站建设网址域名ip解析
  • 网站的扁平化设计理念济南网站优化公司排名
  • 用老域名做新网站 权重怎么传递网络营销好学吗
  • 建立网站分为几阶段百度seo快速排名优化软件
  • 长沙专业个人做网站哪家好免费查权重工具
  • b站怎么看视频在线人数网络推广的优势有哪些
  • 潍坊市建设工程质量安全监督站网站口碑营销案例ppt
  • 易居做网站搜索引擎营销的案例
  • 宁夏网站备案软文范例大全100字