首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    栈的介绍以及使用数组模拟栈的入栈和出栈

    栈(stack) 介绍 (1)栈是一个先进后出的有序列表 (2)栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。...(3)根据栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素时正好相反,最后放入的元素最先删除,最先放入的元素最后删除。...---- 使用数组模拟栈 思路分析 (1)定义一个 top 表示栈顶,初始化为 -1 (2)入栈的操作:stack[++top] = data; (3)出栈的操作:int value = stack[top...int[] stack;//用数组模拟栈,将数据放到数组中 private int top = -1;//表示栈顶,默认值为 -1 public ArrayStack(int maxSize...System.out.printf("stack[%d] = %d\n",i,stack[i]); } } 编写ArrayStackDemo类,演示数组模拟栈

    40710

    使用一维数组,模拟栈数据结构。(压栈,弹栈)

    编写Java程序 要求: 1、这个栈可以存储java中的任何引用类型的数据。 2、在栈中提供push方法模拟压栈。(栈满了,要有提示信息。) 3、在栈中提供pop方法模拟弹栈。...(栈空了,也有有提示信息。) 4、编写测试程序,new栈对象,调用push pop方法来模拟压栈弹栈的动作。 5.假设栈的默认初始化为10....成功,栈帧指向:0 压栈1成功,栈帧指向:1 压栈2成功,栈帧指向:2 压栈3成功,栈帧指向:3 压栈4成功,栈帧指向:4 压栈5成功,栈帧指向:5 压栈6成功,栈帧指向:6 压栈7成功,栈帧指向:7...压栈8成功,栈帧指向:8 压栈9成功,栈帧指向:9 ------------------------------------------------ 谈栈9成功栈帧指向:8 谈栈8成功栈帧指向:7 谈栈...7成功栈帧指向:6 谈栈6成功栈帧指向:5 谈栈5成功栈帧指向:4 谈栈4成功栈帧指向:3 谈栈3成功栈帧指向:2 谈栈2成功栈帧指向:1 谈栈1成功栈帧指向:0 谈栈0成功栈帧指向:-1 弹栈失败,栈已空

    31440

    数据结构初阶:栈的概念和如何模拟栈?

    一.栈 1.栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。...栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 为了更形象地了解栈的形象我们要了解2个概念 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。...如图我们先录入数据1在栈底,然后再录入2,3和新的数据最新录入的数据就是栈顶的位置。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。 此时我们要移除数据就只能从栈顶先移除。...2.模拟栈的实现 那么我们如何来实现模拟栈的实现呢? 有两种结构和次类似,链表和数组,但是相比较来说数组的结构更加优良,因为。因为数组在尾上插入数据的代价比较小。...%d ", SLSize(&aa)); printf("栈顶元素是%d\n", SLTop(&aa)); while (!

    23410

    PHP使用栈完成高级计算器-接上文模拟栈

    距离上一篇文章PHP模拟栈,小梦就答应了小伙伴们要使用栈来完成一个实战的例子,今天就给大家带来了这个例子,让大家更加深入理解它的使用场景!...当出现'3+4*3-2'这个字符串的时候,我们头脑中会有很多的办法去计算这个结果,比如eval/正则等等方法,但是今天小梦给大家讲的是它的底层的实现原理,栈 代码思路如下: 1、一个数栈,存放数字,一个符号栈...,存放运算符 2、循环扫描字符串,如果是数字就入数字栈,如果是运算符将分为以下情况: (1)如果符号栈为空将直接入栈 (2)如果当前的运算符(即将入栈的运算符)的优先级,小于等于符号栈顶部运算符的优先级...,将在数字栈中出栈两个数字然后在符号栈中出栈一个运算符进行计算,之后将计算结果存入数字栈,运算符存入符号栈 (3)如果运算符的优先级大于符号栈顶部运算符,那么将直接入栈 3、计算结果:如果符号栈为空,...将计算完毕,计算步骤为:从数字栈出栈两个数字和符号栈中出栈一个符号栈进行计算,然后存入数字栈,之后运算结果在数字栈中 上代码了: ?

    54310

    linuxbash:用数组模拟栈(FILO)的封装

    linux shell中是没有队列这个类型的,如果需要用到队列模型,就需要自己实现,以下是用数组模拟一个栈(FILO)的操作 #!.../bin/bash # 向栈中添加一个元素 # $1 栈变量名 # $2 添加到栈中的元素 function stack_push(){ # 定义array 为间接引用变量 declare -n array...=$1 array=(${array[@]} "$2") } # 从栈中弹出一个元素 # $1 栈变量名 # stack_pop_return中返回弹出的元素,如果栈为空则返回空 function stack_pop...& \ array=(${array[@]:0:$(($size-1))}) } ################ 调用示例 ################## # 在这里 names 为保存栈数据的数组变量名...stack_pop names echo stack_pop_return=$stack_pop_return echo names=${names[@]} stack_pop names echo 栈为空时

    70640

    【C++】STL:栈和队列模拟实现

    栈是一种先进后出(LIFO)的数据结构,类似于我们平时堆叠的一摞书,只能在顶部进行操作。在C++中,可以使用std::stack模板类来创建栈。...栈的主要操作包括压入(push)元素到栈顶、弹出(pop)栈顶元素以及获取栈顶元素等。 队列是一种先进先出(FIFO)的数据结构,类似于排队等候的人群,新元素插入队尾,最早插入的元素在队头。...2.stack模拟实现 stack函数 作用 push 尾插(栈顶入栈) pop 尾删(栈顶出栈) top 获取栈顶元素(也就是尾部元素) const top 给const对象使用 size 栈中元素个数...empty 判断栈是否为空 stack模拟实现我们就可以使用之前学习过的vector或者list容器来实现,可以创建一个类模板,除了数据的类型可以改变,其使用的容器也可以改变,代码如下: template...} } 注意测试代码要包含在自己的命名空间中哦,我们这里显示的将容器给了vector来存储数据,记得要包含vector的头文件#include 3.queue模拟实现

    40810

    使用数组模拟队列、循环队列和栈

    但是如果在考试中或者笔试面试中,为了要使用栈和队列,而去写一个完整的数据结构是比较大费周章,况且在时间上也不一定允许,因此,使用数组来模拟栈和队列的实现是一种明智的选择,原因有两个: 一、使用数组模拟队列和栈可以简化编程的复杂度...二、使用数组模拟的栈和队列在效率上比标准库的容器类高很多,可以使得程序执行的速度更快。...1.数组模拟栈的实现 数组模拟栈的的实现,在栈顶指针的处理上,一般有两种处理方式top=-1,和top=0,也就意味着在这两种情况下对栈的操作是不相同的。...(1)top=-1 #include #define MAX 100 //定义栈的大小 int s[MAX]; int top = -1;//初始的栈顶指针为-1 void push...2.数组模拟栈的实现 #include #define N 100 int q[N]; int f=-1, r=-1;//初始定义队头和队尾指针均为-1 void push(int

    1.2K20
    领券