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;
}

栈和递归---手动实现一个栈和蒜头君吃桃相关推荐

  1. 如何用JavaScript手动实现一个栈

    什么是栈(Stack) 栈是一种遵从后进先出(LIFO)原则的有序集合. 新添加的或待删除的元素都保存在栈的末尾,称为栈顶,另一端叫栈底. 在栈里,新元素都靠近栈顶,旧元素都接近栈底 现实中的例子 在 ...

  2. 【数据结构与算法】详解什么是栈,并用代码手动实现一个栈结构

    本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...

  3. 栈与队列4——用一个栈实现另一个栈的排序

    题目 一个栈A的元素类型为整形,仅使用一个栈B,来实现栈A从栈顶到栈底元素是从大到小的顺序. 思路 原来的栈为stack,申请的栈为help,当前stack的栈顶元素记为cur 如果cur小于help ...

  4. 栈和队列之用一个栈实现另一个栈的排序

    用一个栈实现另一个栈的排序 题目: 一个栈元素的类型为整数,现在要想将该栈从顶到底按从大到小的顺序排列,只允许申请一个栈,除此之外, 可以申请一个变量,可以申请额外的变量,但是不能申请额外的数据结构, ...

  5. 数据结构(C语言版)之栈及递归

    目录 前言 正文 一.栈 1.栈的概念及术语 1.定义 2.逻辑结构 3.存储结构 4.运算规则 5.实现方式 6.栈是一种特殊的线性表,它的逻辑结构和存储结构与线性表相同,其特殊性体现在" ...

  6. java语言数组实现栈的操作_基于自定义的动态数组实现一个栈(Java语言)

    1.什么是栈? (1)只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶. (2)栈是一种后进先出的数据结构 画个图: 2.栈的实现 (1)定义一个栈的接口 接口是类的行为的抽象. 以下行为分别 ...

  7. 【LeetCode之栈和队列】:关于栈和队列经典的OJ题(用C语言实现,附图详解)

    LeetCode题目 1.括号匹配问题 2.用队列实现栈 3.用栈实现队列 4.设计循环队列 1.括号匹配问题 LeetCode链接: [20. 有效的括号] 这道题就是经典的利用栈解决问题的例子:思 ...

  8. 数据结构之栈和队列以及如何封装栈和队列,栈和队列的实例(进制转换和击鼓传花)

    什么是数据结构? 不同的书对数据结构有不同的定义,例如: "数据结构是数据对象,以及存在于该对象的实例和 组成实例的数据元素之间的各种联系.这些联系可以通过定义相关的函数来给出." ...

  9. 栈与队列3——用递归和栈操作逆序一个栈

    题目 一个栈依次压入1,2,3:此时栈顶到栈底元素分别为:3,2,1:将栈反转,使得栈顶到栈底元素为:1,2,3,仅限递归函数,并且不能使用其他数据结构 思路 使用两个函数reverse和getAnd ...

最新文章

  1. Myeclipse7.5 下载 安装 注冊 注冊码 100%成功
  2. tab-pane 怎么家点击事件_想起爆款?怎么样去打造一个人见人点的爆款主图?
  3. ElementUI中el-select下拉框选择不同的项控制其他控件(单选控件)的显示和隐藏
  4. 汇编语言(三十五)之输入字符串以$结束然后输出字母个数
  5. linux入门_Linux超详细0基础入门篇(一)
  6. 在互联网和信息快速整合的时代
  7. Django Form 详解
  8. win2008Server 部署网站
  9. 超声波无线充电电动牙刷方案开发设计
  10. mac安装软件提示不被信任的程序
  11. 对dede标签调用的内容进行判断并输出的方法
  12. (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  13. ES6-11数值扩展:二进制和八进制、数值分隔符、Number.isFinite()、Number.isNaN()等
  14. 给计算机系学生的建议
  15. Visitor(访问者)示例
  16. 很是惆怅,不知如何看待自己智能车竞赛获奖结果
  17. 可解释性神经网络——2.添加约束的xNN
  18. 基于python的国内外研究现状怎么写_如何写国内外研究现状
  19. 玩这么久 Python ,这些好玩又实用的库一定不能错过!
  20. ABP中把EF访问sql server改为mysql

热门文章

  1. python123-python123练习题.doc
  2. python爬虫从入门到放弃-python爬虫从入门到放弃(二)之爬虫的原理
  3. python编程可以自学么-风变编程的Python这么火,零基础可以自学吗?
  4. python零基础学习书-零基础学Python,不容错过的入门书籍
  5. 0基础学python要多久-零基础零经验自学Python,到精通Python要多久啊?
  6. python在线朗读-使用python编写一个语音朗读闹钟功能的示例代码
  7. python编程入门-python编程入门(第3版)
  8. 微鲸科大讯飞、出门问问合作 TA的语音功能怎么样?
  9. 从语音识别到语义识别还有多少路要走?
  10. 搜狗王小川:搜狗的语音识别比阿里和科大讯飞的好