栈和递归---手动实现一个栈和蒜头君吃桃
栈
push——压入
pop——弹出
特点:先进后出
一、手动实现一个栈
封装数据结构——栈写成class或struct,将当前栈的数据和对当前栈的操作都放在里面
定义一个结构体Stack,规定最大存储元素个数10000,然后用来定义存储数据的数组int data[10000],top指示现在栈顶的下标,栈底没有元素,默认下标为0,初始化时,栈中没有元素,top的值为-1.
代码:
#include<iostream>
using namespace std;
struct Stack{int data[10000];int top=-1;void push(int x){top++;if(top<10000){data[top]=x; }else{top--;cout<<"stack overflow"<<endl;}}void pop(){if(top>=0){top--;}}int topval(){ //获取栈顶元素 if(top>=0){return data[top];}}
};
int main(){Stack s;for(int i=1;i<=10;i++){s.push(i);} for(int i=1;i<=10;i++){cout<<s.topval()<<" "; //每次取栈顶元素s.pop(); }return 0;
}
二、蒜头君吃桃
蒜头君买了一堆桃不知道个数,第一个吃了一半的桃子,又多吃了一个。以后他每天吃剩下的桃子的一半还多一个,到第n天只剩下一个桃子了,问一开始买了多少个桃子?
输入格式
输入一个·整数n(2<=n<=30)
输出格式
输出桃子数量
输入样例
3
输出样例
10
代码
#include<iostream>
using namespace std;int n;
int f(int x){ //x:天数 if(x==n){return 1;}else{return (f(x+1)+1)*2;}
}
int main(){scanf("%d",&n);printf("%d",f(1));return 0;
}
栈和递归---手动实现一个栈和蒜头君吃桃相关推荐
- 如何用JavaScript手动实现一个栈
什么是栈(Stack) 栈是一种遵从后进先出(LIFO)原则的有序集合. 新添加的或待删除的元素都保存在栈的末尾,称为栈顶,另一端叫栈底. 在栈里,新元素都靠近栈顶,旧元素都接近栈底 现实中的例子 在 ...
- 【数据结构与算法】详解什么是栈,并用代码手动实现一个栈结构
本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...
- 栈与队列4——用一个栈实现另一个栈的排序
题目 一个栈A的元素类型为整形,仅使用一个栈B,来实现栈A从栈顶到栈底元素是从大到小的顺序. 思路 原来的栈为stack,申请的栈为help,当前stack的栈顶元素记为cur 如果cur小于help ...
- 栈和队列之用一个栈实现另一个栈的排序
用一个栈实现另一个栈的排序 题目: 一个栈元素的类型为整数,现在要想将该栈从顶到底按从大到小的顺序排列,只允许申请一个栈,除此之外, 可以申请一个变量,可以申请额外的变量,但是不能申请额外的数据结构, ...
- 数据结构(C语言版)之栈及递归
目录 前言 正文 一.栈 1.栈的概念及术语 1.定义 2.逻辑结构 3.存储结构 4.运算规则 5.实现方式 6.栈是一种特殊的线性表,它的逻辑结构和存储结构与线性表相同,其特殊性体现在" ...
- java语言数组实现栈的操作_基于自定义的动态数组实现一个栈(Java语言)
1.什么是栈? (1)只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶. (2)栈是一种后进先出的数据结构 画个图: 2.栈的实现 (1)定义一个栈的接口 接口是类的行为的抽象. 以下行为分别 ...
- 【LeetCode之栈和队列】:关于栈和队列经典的OJ题(用C语言实现,附图详解)
LeetCode题目 1.括号匹配问题 2.用队列实现栈 3.用栈实现队列 4.设计循环队列 1.括号匹配问题 LeetCode链接: [20. 有效的括号] 这道题就是经典的利用栈解决问题的例子:思 ...
- 数据结构之栈和队列以及如何封装栈和队列,栈和队列的实例(进制转换和击鼓传花)
什么是数据结构? 不同的书对数据结构有不同的定义,例如: "数据结构是数据对象,以及存在于该对象的实例和 组成实例的数据元素之间的各种联系.这些联系可以通过定义相关的函数来给出." ...
- 栈与队列3——用递归和栈操作逆序一个栈
题目 一个栈依次压入1,2,3:此时栈顶到栈底元素分别为:3,2,1:将栈反转,使得栈顶到栈底元素为:1,2,3,仅限递归函数,并且不能使用其他数据结构 思路 使用两个函数reverse和getAnd ...
最新文章
- Myeclipse7.5 下载 安装 注冊 注冊码 100%成功
- tab-pane 怎么家点击事件_想起爆款?怎么样去打造一个人见人点的爆款主图?
- ElementUI中el-select下拉框选择不同的项控制其他控件(单选控件)的显示和隐藏
- 汇编语言(三十五)之输入字符串以$结束然后输出字母个数
- linux入门_Linux超详细0基础入门篇(一)
- 在互联网和信息快速整合的时代
- Django Form 详解
- win2008Server 部署网站
- 超声波无线充电电动牙刷方案开发设计
- mac安装软件提示不被信任的程序
- 对dede标签调用的内容进行判断并输出的方法
- (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
- ES6-11数值扩展:二进制和八进制、数值分隔符、Number.isFinite()、Number.isNaN()等
- 给计算机系学生的建议
- Visitor(访问者)示例
- 很是惆怅,不知如何看待自己智能车竞赛获奖结果
- 可解释性神经网络——2.添加约束的xNN
- 基于python的国内外研究现状怎么写_如何写国内外研究现状
- 玩这么久 Python ,这些好玩又实用的库一定不能错过!
- ABP中把EF访问sql server改为mysql
热门文章
- python123-python123练习题.doc
- python爬虫从入门到放弃-python爬虫从入门到放弃(二)之爬虫的原理
- python编程可以自学么-风变编程的Python这么火,零基础可以自学吗?
- python零基础学习书-零基础学Python,不容错过的入门书籍
- 0基础学python要多久-零基础零经验自学Python,到精通Python要多久啊?
- python在线朗读-使用python编写一个语音朗读闹钟功能的示例代码
- python编程入门-python编程入门(第3版)
- 微鲸科大讯飞、出门问问合作 TA的语音功能怎么样?
- 从语音识别到语义识别还有多少路要走?
- 搜狗王小川:搜狗的语音识别比阿里和科大讯飞的好