3-1 栈

  

2019-06-28 00:51:58

3-1 栈 1、基本概念 栈是限制仅在表的一端进行插入和删除操作的线性表。 通常称插入、删除的这一端为 栈顶, 另一端称为栈底。当表中没有元素时称为空栈。 由于栈中元素的插入和删除操作都只能在栈顶进行,所以总是后进栈的先出栈。 (LIFO) Last In First Out. 后进先出 栈的基本操作有五种: ①init(),将栈S初始化为空 ②empty() 判空栈,判断栈是否为空 ③top()...

重学数据结构之栈

顺序栈  

  

2019-06-02 15:20:55

栈是限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端称为栈顶,另一端则为栈底。仅能对栈顶元素直接进行操作。 如图所示,初始状态下栈里有三个元素。这三个元素进入栈的顺序必然是x,y,z,出栈顺序必然是z,y,x(这里我们不考虑其他元素)。可见,先进入的元素x由于最先进入栈内,被其他进入的元素压在栈底,而最后出来,所以我们说栈具有先进后出的特性。 关于栈的使用,最常见的是括号匹配,若是左括...

栈的底层原理和应用

栈源码

  

2019-06-07 08:22:31

关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设计与实现 java数据结构与算法之队列(Queue)设计与实现 java数据结构与算法之递归思维(让我们更通俗地...

题目的要求用两个栈来模拟队列,假设使用栈A和B模拟队列Q,A为插入栈,B为弹出栈,以实现队列Q。 再假设A和B都为空,可认为栈A提供入队列功能,栈B提供出队列的功能。 要入队列,入栈A即可,而出队列则要考虑两种情况: (1)如果栈B不为空,则直接弹出栈B的数据 (2)如果栈B为空,则依次弹出栈A的数据,放入栈B中,再弹出栈B的数据 示例代码如下:   在剑指offer中的答案如下:...

栈 栈是一种只能在一端进行插入和删除的线性数据结构。主要有进栈(Push)和出栈(POP)两个操作。 - 栈的存储结构 栈一般使用一段连续的空间进行存储,通常预先分配一个长度,可以简单地使用数组去实现,具体的存储结构如下图所示: - 栈的特点 只能在一端进行操作,在遵循先进后出(FILO,First In Last Out)或后进先出(LIFO,Last In First Out)的原则. 栈的代...

Java栈和栈桢

java  jvm  bytecode    栈帧

  

2019-06-18 21:52:21

原文应该也是在JavaEye中的博客,找不到了。 在原文基础了做了增删,以方便理解。 Java中的栈 每当线程调用一个Java方法时,JVM就会在该线程对应的栈中压入一个帧,这个帧自然就成了当前帧。当执行这个方法时,它使用这个帧来存储参数、局部变量、中间运算结果等等。 Java栈上的所有数据都是私有的。任何线程都不能访问另一个线程的栈数据。所以我们不用考虑多线程情况下栈数据访问同步的情况。 像方法...

做PWN题经常遇到栈溢出,有时一些栈的基础知识总是记不清楚,脑子卡顿,所以整理一番,让自己彻底记住它! 1. 什么是栈? 栈,即堆栈,是一种具有一定规则的数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。 堆栈数据结构的两种基本操作: PUSH:将数据压入栈顶 POP  :将栈顶数据弹出 知道了什么是栈,我们看看栈在内存中是怎样一个分布情况。 以Linux...

栈的顺序存储结构及实现

数据结构    

  

2019-06-03 12:50:44

栈是线性表的特例,栈只在栈顶进行插入及删除操作,因此数据是后进先出。栈的顺序存储其实也是线性表顺序存储的简化。 栈的结构定义如下: 进栈操作push,其代码如下: 出栈操作pop,其代码如下: 由于栈的顺序存储没有用到循环,因此时间复杂度均为O(1)....

[栈] 表达式求值

  数据结构

  

2019-06-09 01:01:10

表达式 表达式求值 前缀表达式 中缀表达式 后缀表达式 表达式求值 表达式转后缀表达式 表达式求值 代码:支持2位以上的数字 表达式 表达式有三种表示方法:运算符所在不同位置命名 【例子】 表达式:A-B×C/D+E^F 表达式->后缀表达式: 表达式求值 前缀表达式 Exp = OP S1 S2 【讨论】 Exp = + ×ab ×-c/def 计算之后...

leetcode : 最小栈

leetcode  算法  JAVA  

  

2019-06-23 17:00:56

最小栈 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素 示例 思路 : ① 最小栈能够找到当前栈中的最小元素 ② 用HashMap存取当前栈中已存放的数据...

HDU 6052 思维+单调栈

思维    难题  单调栈

  

2019-06-24 19:35:27

http://acm.hdu.edu.cn/showproblem.php?pid=6052 题意:给一个n*m(1<=n,m<=100)的矩阵,每个矩阵元素有一个颜色值ai(0<=ai<=10000),现在定义一个子矩阵的value为子矩阵中不同颜色的数量,求子矩阵value的期望。 题解: 做这个题首先是因为南京网络赛的B题,然后这就是传说中相近的原题之一。。好吧,是多...

HTTP协议概论

http  协议栈

  

2019-07-04 01:28:03

1. HTTP协议简介       网络中传输数据需要面临三个问题:    客户端如何知道所请求内容的位置?    当客户端知道所请求内容的位置后,如何获取所请求的内容?    所请求内容以何种形式组织以便被客户端所识别?       对于网络应用来说解决上述问题的方法...

算法学习之栈与队列

Java  队列  

  

2019-07-04 05:09:24

算法学习之栈与队列 一、栈 Stack 0x1 数组的子集 栈也是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端称为栈顶 栈是一种后进先出的数据结构 Last In First Out (LIFO) 在计算机的世界里,栈拥有着不可思议的作用 0x2 栈的应用 无处不在的Undo操作(撤销) 程序调用的系统栈 括号匹配 - 编译器 0x3 栈的实现...

最近学习数据结构,用C语言写了栈的基本操作,却发现在销毁栈时,初始尺寸STACK_INIT_SIZE改成10,1000可以顺利运行,改成100无法运行(编译都没问题),这让我无法理解。下面是代码和运行的结果,希望有懂得朋友能帮助解释下,是代码问题还是其他问题。 STACK_INIT_SIZE为10的运行结果,程序正常结束。 STACK_INIT_SIZE为100的运行结果,程序终止。 STACK_...

JarvisOJ level2 writeup

pwn  栈溢出

  

2019-07-09 12:38:28

这是一题最基础的ROP题,题目有system,有/bin/sh,只需简单组合即可。 拿到题目,查看保护: 可以看到,程序只开启了NX保护。 打开IDA查看程序逻辑: 可以看出,在输出Input:之后,就可以读入数据了。 在buf这里,我们可以看到一个溢出点。 从图片中可以发现,buf距离前栈帧的距离为0x88,也就是说,buf距离返回地址的距离为0x88+4。 所以我们可以填写的垃圾数据长度为0x...