数据结构——栈(栈结构、栈面试题、栈的操作、栈结构实现、进制的转换)

本文详细介绍了栈的结构和面试题,包括栈的操作如push、pop、peek、isEmpty及size方法。阐述了栈的后进先出特性,并通过函数调用栈的例子解释其工作原理。还讨论了栈的实现,提供了栈的常见面试题和解决方案,以及栈在进制转换中的应用。
摘要由CSDN通过智能技术生成

目录

一、栈结构

二、栈面试题

四、栈的操作

1、push方法

         2、pop方法

3、peek方法

4、isEmpty方法

5、size方法

五、栈结构实现

六、十进制转二进制

七、二进制、十六进制、十进制的转换


一、栈结构

数组

- 数组是一种线性结构, 并且可以在数组的任意位置插入和删除数据. 就可以调用unshift、pop、push、shift
- 但是有时候, 我们为了实现某些功能, 必须对这种任意性加以限制.
- 而栈和队列就是比较常见的受限的线性结构

 

栈(stack),它是一种运算受限的线性表,后进先出(LIFO)

- LIFO(last in first out)表示就是后进入的元素, 第一个弹出栈空间. 
- 其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。
- 向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;
- 从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

 程序中什么是使用栈实现的呢?—— 函数调用栈
- 我们知道函数之间和相互调用: A调用B, B中又调用C, C中又调用D.
- 那样在执行的过程中, 会先将A压入栈, A没有执行完, 所有不会弹出栈.
- 在A执行的过程中调用了B, 会将B压入到栈, 这个时候B在栈顶, A在栈底.
- 如果这个时候B可以执行完, 那么B会弹出栈. 但是B有执行完吗? 没有, 它调用了C.
- 所以C会压栈, 并且在栈顶. 而C调用了D, D会压入到栈顶.
- 所以当前的栈顺序是: 栈顶A->B->C->D栈顶
- D执行完, 弹出栈. C/B/A依次弹出栈.
- 所以我们有函数调用栈的称呼, 就来自于它们内部的实现机制. (通过栈来实现的)

二、栈面试题

有六个元素6,5,4,3,2,1的顺序进栈,问以下哪一个不是合法的出栈顺序?()
A.5 4 3 6 1   B.4 5 3 2 1 6    C.3 4 6 5 2 1    D.2 3 4 1 5 6

var stack = new Stack()    //Stack函数在下面 
stack.push(6)
stack.push(5)
stack.pop()     // 5
stack.push(4)
stack.pop()     // 4
stack.push(3)
stack.pop()     // 3
stack.pop()     // 6
stack.push(2)
stack.push(1)
stack.pop()     // 1
stack.pop()     // 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值