广西一站网网络技术集团有限公司,福州网站建设好的公司,沧州网络制作公司有哪些,合肥百度搜索优化目录
前言
Everyday English
栈#xff08;Stack#xff09;
图文解释
实现添加删除元素
实现查看清空栈
完整代码
运行示例
栈的选择题
队列#xff08;Queue#xff09;
图文解释
队列的基本用法
完整代码
运行结果
队列的好处
结尾 前言
今天我们将…目录
前言
Everyday English
栈Stack
图文解释
实现添加删除元素
实现查看清空栈
完整代码
运行示例
栈的选择题
队列Queue
图文解释
队列的基本用法
完整代码
运行结果
队列的好处
结尾 前言
今天我们将学习两个新的数据结构——栈和队列。
Everyday English A friend in need is a friend indeed. 患难见真情。 栈Stack
图文解释 栈最直白的想象就是羽毛球筒了假设从一个口取。 比如说我想按照红-橙-黄的顺序放进去并取出橙色羽毛去得进行以下操作 1.放入红-橙-黄色羽毛球。 2.取出顶部的黄色羽毛球。 3.取出顶部的橙色羽毛球。 下面请欣赏我的纯手绘图片 现在请你把注意力放在黄色羽毛球上它在放进筒时是最后一个放进去的而被取出来时是第一个被取出来的而红色羽毛球却是最后一个被取出来的。所以栈有一个很重要的性质 先进后出后进先出LIFOLast 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 i1;itmp;i){coutn[i] ;}
} 清空把数组归零并把指针赋值为1。 void empty(int n[])
{for(int i1;itmp;i){n[i]0;}tmp0;
}
完整代码
#includebits/stdc.h
using namespace std;
string op;
int a[1005],tmp0,n;
char b[1005],m;
void add(int n)//添加元素至栈顶
{tmp;a[tmp]n;
}
void pop()//删除栈顶元素
{a[tmp]0;//这一步可要可不要tmp--;
}
void look(int n[])
{coutThe stack is:; for(int i1;itmp;i){coutn[i] ;}
}
void empty(int n[])
{for(int i1;itmp;i){n[i]0;}tmp0;coutThe stack is empty now.endl;
}
int main()
{memset(a,0,sizeof(a));while(1){cinop;if(op[0]s) return 0;else {if(op[0]a) cinn,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.对于入栈顺序为abcde的序列下列 不是合法的出栈序列。
A.abcde
B.edcba
C.bacde
D.cdaeb 题目来源2021 CSP-J 选择题第五题 解析因为a比b先入栈所以出栈时a应该在b后面故选D。当然你也可以模拟一下。 A.进栈一个出栈一个 B.全部进栈全部出栈 C.a进栈b进栈b出栈a出栈剩下的进栈一个出栈一个。 D.无法完成 3.下图中所使用的数据结构是 A、栈
B、队列
C、二叉树
D、哈希表 栈的性质是后进先出故选A。 队列Queue
图文解释 队列顾名思义就是排队买票先买票的人总是先出来最后买票的人最后出来。 如上图1号游客最先排队所以他第一个买票也是第一个出来的这就是队列的重要性质 先进先出后进后出FIFOFirst 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() //返回队列中元素的数量
完整代码
#includebits/stdc.h
using namespace std;
int main()
{queueint q;q.push(1);q.push(2);q.push(3);q.pop();coutq.front()endl;q.pop();coutq.size()endl;q.pop();if(q.empty()) coutThe queue is empty.endl;return 0;
}
运行结果
2
1
The queue is empty.
队列的好处
等我们后面学到BFS时会用到很多有关于队列的知识。
结尾
本篇文章我们学习了栈和队列图片为纯手绘无参考制作不易还请各位大佬三连支持一下