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

太原做网站公司哪家好厦门零基础学seo

太原做网站公司哪家好,厦门零基础学seo,网站做一排横图,wordpress小型门户目录 前言 Everyday English 栈(Stack) 图文解释 实现添加删除元素 实现查看清空栈 完整代码 运行示例 栈的选择题 队列(Queue) 图文解释 队列的基本用法 完整代码 运行结果 队列的好处 结尾 前言 今天我们将…

目录

前言

Everyday English

栈(Stack)

图文解释

实现添加删除元素

实现查看清空栈

完整代码

运行示例

栈的选择题

队列(Queue)

图文解释

队列的基本用法

完整代码 

运行结果 

队列的好处 

结尾 


前言

今天我们将学习两个新的数据结构——栈和队列。

Everyday English

A friend in need is a friend indeed.
患难见真情。

栈(Stack)

图文解释

栈最直白的想象就是羽毛球筒了(假设从一个口取)。

比如说我想按照--的顺序放进去,并取出色羽毛去,得进行以下操作:

1.放入红-橙-黄色羽毛球。

2.取出顶部的黄色羽毛球。

3.取出顶部的橙色羽毛球。

下面请欣赏我的纯手绘图片:

现在请你把注意力放在黄色羽毛球上,它在放进筒时是最后一个放进去的,而被取出来时是第一个被取出来的;而红色羽毛球却是最后一个被取出来的。所以栈有一个很重要的性质:

先进后出,后进先出(LIFO:Last in first out)

实现添加删除元素

添加:将元素入栈并使指针右移一位。

void add(int n)//添加元素至栈顶
{tmp++;a[tmp]=n;
}

 删除:将元素出栈并使指针左移一位。

void pop()//删除栈顶元素
{a[tmp]=0;//这一步可要可不要tmp--;
}

实现查看清空栈

查看:把数组从1-tmp输出一下即可。

void look(int n[])
{for(int i=1;i<=tmp;i++){cout<<n[i]<<" ";}
}

清空:把数组归零,并把指针赋值为1。 

void empty(int n[])
{for(int i=1;i<=tmp;i++){n[i]=0;}tmp=0;
}

完整代码

#include<bits/stdc++.h>
using namespace std;
string op="";
int a[1005],tmp=0,n;
char b[1005],m;
void add(int n)//添加元素至栈顶
{tmp++;a[tmp]=n;
}
void pop()//删除栈顶元素
{a[tmp]=0;//这一步可要可不要tmp--;
}
void look(int n[])
{cout<<"The stack is:"; for(int i=1;i<=tmp;i++){cout<<n[i]<<" ";}
}
void empty(int n[])
{for(int i=1;i<=tmp;i++){n[i]=0;}tmp=0;cout<<"The stack is empty now."<<endl;
}
int main()
{memset(a,0,sizeof(a));while(1){cin>>op;if(op[0]=='s') return 0;else {if(op[0]=='a') cin>>n,add(n);if(op[0]=='p') pop();if(op[0]=='l') look(a);if(op[0]=='e') empty(a);}}
} 

运行示例

add 1
add 2
add 3
add 4
pop
pop
look
The stack is:1 2
add 5
empty
The stack is empty now.
add 6
look
The stack is:6

栈的选择题

栈虽然编程中用的不是特别多,但是在CSP的第一轮考试中经常出现,我们来看一看。 

1.有6个元素,按照6、5、4、3、2、1的顺序入栈S,请问下列哪个出栈顺序是非法的?

A.5  4  3  6  1  2

B.4  5  3  1  2  6

C.3  4  6  5  2  1

D.2  3  4  1  5  6

题目来源:2022 CSP-J 选择第二题

解析:因为6比5先入栈,所以出栈时6应该在5后面,故选C。当然你也可以模拟一下。

2.对于入栈顺序为a,b,c,d,e的序列,下列( )不是合法的出栈序列。

A.a,b,c,d,e

B.e,d,c,b,a

C.b,a,c,d,e

D.c,d,a,e,b

题目来源:2021 CSP-J 选择题第五题

解析:因为a比b先入栈,所以出栈时a应该在b后面,故选D。当然你也可以模拟一下。

A.进栈一个,出栈一个

B.全部进栈,全部出栈

C.a进栈,b进栈,b出栈,a出栈,剩下的进栈一个,出栈一个。

D.无法完成

3.下图中所使用的数据结构是?

A、栈

B、队列

C、二叉树

D、哈希表

栈的性质是:后进先出,故选A。

队列(Queue)

图文解释

队列顾名思义就是排队买票,先买票的人总是先出来,最后买票的人最后出来。

如上图,1号游客最先排队,所以他第一个买票也是第一个出来的,这就是队列的重要性质:

先进先出,后进后出(FIFO:First in first out)

队列的基本用法

在C++中,已经有为我们写好的队列了,我们只需直接使用即可。

首先需要定义一个队列:

queue<变量类型> q; 

这个变量类型可以是int,double,long long,struct...... 

下面是队列的几个基本用法:

q.pop() //弹出队首元素
q.push(item) //把元素item插入到队尾
q.empty() //如果队列为空返回True,否则返回False
q.full() //如果队列已满返回True,否则返回False
q.front() //调用队首元素
q.size() //返回队列中元素的数量

完整代码 

#include<bits/stdc++.h>
using namespace std;
int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.pop();cout<<q.front()<<endl;q.pop();cout<<q.size()<<endl;q.pop();if(q.empty()) cout<<"The queue is empty."<<endl;return 0;
}

运行结果 

2
1
The queue is empty.

队列的好处 

等我们后面学到BFS时,会用到很多有关于队列的知识。

结尾 

本篇文章我们学习了栈和队列,图片为纯手绘无参考,制作不易,还请各位大佬三连支持一下

http://www.hkea.cn/news/657337/

相关文章:

  • 广州做网站建设的公司网站公司
  • 做网络平台的网站有哪些广州网站维护
  • 网页 代码怎么做网站东莞市民最新疫情
  • 电子商务网站设计中影响客户体验的元素有搜索引擎有哪些种类
  • 网站建设难点优化关键词技巧
  • 免费行情网站链接百度知道合伙人官网
  • 餐饮公司网站建设的特点大数据智能营销
  • 济南快速排名刷关键词排名seo软件
  • 系统做网站的地方百度推广登录后台登录入口
  • 集约化网站建设情况广告公司网站制作
  • 网站制作发票字节跳动广告代理商加盟
  • 义乌做网站武汉seo推广优化公司
  • 济宁哪家网站建设公司正规谷歌浏览器 免费下载
  • 有没有女的做任务的网站广东省新闻
  • seo长尾关键词优化如何做网站推广优化
  • 网站搭建服务合同seo排名赚
  • 东莞有什么比较好的网站公司苏州关键词排名系统
  • 做中国供应商免费网站有作用吗浙江网站推广运营
  • mysql8 wordpress百度推广优化是什么意思
  • 做装修广告网站好seo推广公司招商
  • 城市模拟建设游戏网站今天最新的新闻头条新闻
  • 手机网站自适应代码品牌网络营销策划方案
  • 个人网站建设在哪里百度资源搜索平台
  • 云空间免费空间北京网站优化校学费
  • 个人网站做导航网站项目推广平台有哪些
  • 威海住房建设局网站培训学校资质办理条件
  • 做趣味图形的网站免费线上培训平台
  • 女生做网站前端设计师成都网站seo
  • 濮阳建设银行官方网站搜索引擎优化的对比
  • 完全删除wordpressseo小白入门