队列/栈/递归知识纲要

满满干货~

queue队列
(一条队):FIFO先进先出(只能 访问/操作 队首和队尾元素) 
声明队列时头文件加
queue容器名
例:queue q;
常用操作函数:
q.push(x);//入队 
q.pop();//出队 
q.front();//访问队首元素
q.back();//访问队尾元素 
q.size();//访问队列长短 
q.empty();//判断队列是否为空,为空为真 
———————— 
stack栈
(弹夹):FILO先进后出(只能访问顶元素) 
声明栈时头文件加
stack 容器名
例:stack stk;
常用操作函数: 
stk.push(x);//入栈 
stk.pop();//出栈 
stk.top();//访问栈顶元素 
stk.size();//访问栈的大小 
stk.empty();//判断队列是否为空,为空为真
———————— 
递归
定义:
传递/回归
函数调用自己就是递归
1.直接递归:常用 
例如:
从前有座山…… 
2.间接递归:不常用
例如:
踢皮球现象
边界:
if(n==1)
{
    return ?;
}
方程:
else
{
    return ?;
}

 举个几个例题

队列:

银行取款

题目描述

在现代文明社会中,大家在诸如银行办理业务、车站买票等活动时都很文明没有插队的现象,本着“先来先服务”的规矩。

五一马上到了,凡凡的爸爸打算上银行去取点钱,带着一向表现很好的凡凡同学到海南旅游,凡凡的爸爸到银行时发现很多人在办理业务,凡凡的爸爸就自觉地在排队机上去了一个业务号码,并焦急的等待着银行柜台叫自己的号码……

输入格式

输入中包含大写字母 I(表示等待办理业务)和顾客的序号;

或者大写字母 O(表示办理完业务的人离开);

输入数据不超过 100 行。

输出格式

输出银行排队中出队顾客序列,若队列为空(没人等待),则输出 None

样例 #1

样例输入 #1

O
I 1
I 2
O 
I 3
O
O
O

样例输出 #1

None
1
2
3
None

代码:

#include
using namespace std;
int main(){
	queue q;
	char a;
	int x;
	while(cin>>a)
	{
		if(a=='O')
		{
			if(q.empty())
			{
				cout<<"None"<>x;
			q.push(x);
		}
	}
	return 0;
}

栈:

栈操作

题目描述

请你实现一个栈(stack),支持如下操作:

push(x):向栈中加入一个数 xx 。

pop():将栈顶弹出。如果此时栈为空,则不进行弹出操作,并输出 Empty Stack

top():输出栈顶元素。如果此时栈为空,则输出 Empty Stack 。

size():输出此时栈内元素个数。

输入格式

第一行,一个整数 n (n<100) 表示操作的次数。

接下来 n 行,每行表示一个操作。格式如下:

  • 1 x :表示将元素 x (1≤x≤1000)x (1≤x≤1000) 加入栈。
  • 2 :表示将栈顶弹出栈。
  • 3 :表示查询栈顶。
  • 4 :表示查询栈内元素个数。

输出格式

输出若干行,对于每个操作,按「题目描述」输出结果。

每条输出之间应当用空行隔开。

样例 #1

样例输入 #1

10
1 1
3 
2
4
2
1 2
1 3
3
4
2

样例输出 #1

1
0
Empty Stack
3
2

代码:

#include
#include
using namespace std;
int main(){
	stackstk;
	int n,x,y;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>x;
		if(x==1)
		{
			cin>>y;
			stk.push(y);
		}
		else if(x==2)
		{
			if(stk.empty())
			{
				cout<<"Empty Stack"<

递归 

N的阶乘(简单版)

题目描述

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且 00 的阶乘为 11 。

例如:55 的阶乘:5!=1×2×3×4×5=1205!=1×2×3×4×5=120。

你的任务是:输入正整数 nn,输出 nn 的阶乘(n!n!)。

输入格式

一个正整数 n(1≤n≤15)n(1≤n≤15)。

输出格式

输出 n!n!。

样例 #1

样例输入 #1

5

样例输出 #1

120

 代码:

#include
using namespace std;
long long f(int n)
{
	if(n==1)
	{
		return 1;
	}
	else
	{
		return f(n-1)*n;
	}
}
int main(){
	int n;
	cin>>n;
	cout<

 

你可能感兴趣的:(小学生码代码,c++,算法,青少年编程,学习,数据结构)