栈结构
栈是一种 非常常见 的数据结构,并且在程序中的 应用非常广泛 。
栈结构示意图
如图;
栈(stack),它是一种受限的线性表,遵循 '后进先出' (LIFO)
其限制是仅允许在 表的一端 进行插入和删除运算。这一段被称为 栈顶,相对的,把另一端成为 栈底。
LIFO(last in first out) 表示就是后进入的元素,第一个弹出栈空间,类似于自助餐的托盘;
向一个栈插入新元素又称作 进栈 、 入栈或压栈, 它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素。
从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其它元素成为新的栈顶元素。
下图为程序中一些使用栈的场景
除此外,递归是通过函数的自调用实现的,如果不给定退出自调用的条件,则会一直不断循环下去,非
常容易出现栈溢出的现象。
关于栈结构的面试题;
就是说,六个元素进入的顺序依次是6,5,4,3,2,1,但是在进入的过程中可以出栈,找出出栈顺序不可能存在的选项。
题目答案: C
A答案: 65进栈,5出栈,4进栈出栈,3进栈出栈,6出栈,21进栈,1出栈,2出栈。
- B答案: 654进栈,4出栈,5出 3进栈出栈,2进栈出栈,1进栈出栈,6出栈。
- D答案: 65432进栈,2出栈,3出栈,4出栈,1进栈出栈,5出栈,6出栈。
栈结构实现
-
实现栈结构有两种比较常见的方式:
基于数组实现
基于链表实现
栈封装常用方法
栈常见有哪些操作呢? push(element): 添加一个新元素到栈顶位置;
pop : 移除栈顶的元素,同时返回被移除的元素.
peek0 : 返回栈顶的元素,不对做任何修改 ( 这个方法不会移除栈顶的元素,仅仅返回它)
isEmpty0 : 如果栈里没有任何元素就返回true,否则返回false。
size0 : 返回栈里的 元素个数。这个方法和数组的length属性很类似
toString0: 将栈结构的内容以字符形式返回
栈结构
栈是一种 非常常见 的数据结构,并且在程序中的 应用非常广泛 。
栈结构示意图
如图;
栈(stack),它是一种受限的线性表,遵循 '后进先出' (LIFO)
其限制是仅允许在 表的一端 进行插入和删除运算。这一段被称为 栈顶,相对的,把另一端成为 栈底。
LIFO(last in first out) 表示就是后进入的元素,第一个弹出栈空间,类似于自助餐的托盘;
向一个栈插入新元素又称作 进栈 、 入栈或压栈, 它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素。
从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其它元素成为新的栈顶元素。
下图为程序中一些使用栈的场景
除此外,递归是通过函数的自调用实现的,如果不给定退出自调用的条件,则会一直不断循环下去,非
常容易出现栈溢出的现象。
关于栈结构的面试题;
就是说,六个元素进入的顺序依次是6,5,4,3,2,1,但是在进入的过程中可以出栈,找出出栈顺序不可能存在的选项。
题目答案: C
A答案: 65进栈,5出栈,4进栈出栈,3进栈出栈,6出栈,21进栈,1出栈,2出栈。
- B答案: 654进栈,4出栈,5出 3进栈出栈,2进栈出栈,1进栈出栈,6出栈。
- D答案: 65432进栈,2出栈,3出栈,4出栈,1进栈出栈,5出栈,6出栈。
栈结构实现
-
实现栈结构有两种比较常见的方式:
基于数组实现
基于链表实现
栈封装常用方法
栈常见有哪些操作呢? push(element): 添加一个新元素到栈顶位置;
pop : 移除栈顶的元素,同时返回被移除的元素.
peek0 : 返回栈顶的元素,不对做任何修改 ( 这个方法不会移除栈顶的元素,仅仅返回它)
isEmpty0 : 如果栈里没有任何元素就返回true,否则返回false。
size0 : 返回栈里的 元素个数。这个方法和数组的length属性很类似
toString0: 将栈结构的内容以字符形式返回