一、概念 栈:后进先出,先进后出的数据结构。栈是一种“操作受限‘的线性表,只允许在一端插入和删除数据。 当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,我们就应该首选“栈”这种数据结构。 二、如何实现“栈” 既可用数组(顺序栈),也可用链表(链式栈) 数组实现: // 基 ...
分类:
编程语言 时间:
2020-06-16 23:16:52
阅读次数:
79
栈 相关概念 栈是一种特殊的线性表 只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。 原则:后进先出LIFO(Last In First Out) 压栈:栈的插入操作,入数据在栈顶 出栈:栈的删除操作,出数据也在栈顶 我们来实现自己的栈,首先用数组来 ...
分类:
其他好文 时间:
2020-06-14 11:14:49
阅读次数:
56
简介 Stack是一个栈,那就满足于后进先出(FILO)。 public class Stack<E> extends Vector<E> 该类继承自Vector,即其容器的数据类型是数据,拥有Vector的特性。在Vector源码分析有详细该类信息。 构造函数: public Stack() {} ...
分类:
其他好文 时间:
2020-06-11 12:03:31
阅读次数:
65
一、背景 栈和队列是数据结构中最常用到的两种结构,有非常广泛的运用,该篇文章将通过动画的手段,展示栈和队列相互实现的底层原理,让我们真正搞懂栈和队列的特性。 二、概念 2.1 栈 栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out ...
分类:
其他好文 时间:
2020-06-09 18:34:08
阅读次数:
68
一、栈的基本概念:只允许在一端进行插入或者删除操作的线性表 <后进先出> 栈顺序存储结构: 共享栈:将两个栈底设置在共享空间的两端,栈顶向空间中间延伸 判空:0号栈 top == -1 1号栈 top == MaxSize 栈满:top1 - top0 == 1 优点:存取时间复杂度仍未O(1),但 ...
分类:
其他好文 时间:
2020-05-29 12:04:35
阅读次数:
66
1. 利用栈:后进先出 将链表从头到尾压入栈中,再从栈中pop出来,对链表从头到尾赋值。 1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 ...
分类:
其他好文 时间:
2020-05-05 19:42:08
阅读次数:
52
栈 栈(Stack)是一个后进先出(LIFO)的数据结构,直接上图 简单来说栈只有两种操作,出栈和入栈,直接来看一下java.util.Stack里面的实现。 Stack继承自Vector一个线程安全的容器(动态数组) 入栈操作,调用了Vector的addElement函数,向动态数组末尾添加一个元 ...
分类:
其他好文 时间:
2020-05-02 21:17:06
阅读次数:
81
栈 思路: 由于括号一般是成对出现,可以利用栈后进先出的特征。将字符串字符按顺序压入栈中,压入过程中如果遇到右括号时,推出栈顶元素,判断当前要压入的右括号是否和栈顶元素是一对,如果是则继续下一字符的压入判断操作。如果不是,直接返回False。当压入过程结束后,如果栈内为空则返回True,否则返回Fa ...
分类:
其他好文 时间:
2020-05-02 13:25:39
阅读次数:
64
栈 栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,我们就应该首选“栈”这种数据结构。 实际上,栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序栈,用链表实现的栈,我们叫作链式栈。 用数组实现 ...
分类:
其他好文 时间:
2020-05-02 09:43:55
阅读次数:
49
<!doctype html>1.堆栈的应用 1 堆栈的应用1.1进制转换1.2 括号匹配检测1.3 迷宫求解 1 堆栈的应用 堆栈所具有的后进先出特性,使得堆栈成为程序设计中非常有用的工具。本节将讨论堆 栈应用的典型例子。 1.1进制转换 进制转换是一种常见的数值计算问题,例如将十进制数转换成八进 ...
分类:
其他好文 时间:
2020-05-01 01:00:05
阅读次数:
97