1.栈的原理 后进先出(LIFO-last in first out):最后插入的元素最先出来,是一种“操作受限”的线性表,只允许在端插入和删除数据 2.栈的实现 顺序栈:用数组实现,顺序栈需要动态扩容,在初始化时需要给定一个固定大小的数组,当栈大于固定大小时需要扩充数组的大小。 链式栈:用链表实现 ...
分类:
编程语言 时间:
2019-09-27 22:49:21
阅读次数:
112
题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 方法一: 方法二: Python四种类型的队例: Queue:FIFO 即first in first out 先进先出 LifoQueue:LIFO 即last in first out 后进先出 PriorityQueue ...
分类:
其他好文 时间:
2019-09-26 00:31:58
阅读次数:
98
在x86的计算机系统中,内存空间中的栈主要用于保存函数的参数,返回值,返回地址,本地变量等。一切的函数调用都要将不同的数据、地址压入或者弹出栈。因此,为了更好地理解函数的调用,我们需要先来看看栈是怎么工作的。 栈是什么? 简单来说,栈是一种LIFO形式的数据结构,所有的数据都是后进先出。这种形式的数 ...
分类:
其他好文 时间:
2019-09-01 10:52:36
阅读次数:
101
queue 模块下提供了几个阻塞队列,这些队列主要用于实现线程通信。在 queue 模块下主要提供了三个类,分别代表三种队列,它们的主要区别就在于进队列、出队列的不同。关于这三个队列类的简单介绍如下: 这三个队列类的属性和方法基本相同, 它们都提供了如下属性和方法: Queue.qsize():返回 ...
分类:
编程语言 时间:
2019-08-28 10:57:58
阅读次数:
95
[TOC] 1. 线程队列 1.1 先进先出(FIFO) 1.2 后进先出(LIFO)堆栈 1.3 优先级队列 面试题:用列表实现队列和堆栈 2. 事件event ? 开启两个线程,一个线程运行到中间的某个阶段,触发另一个线程执行。两个线程增加了耦合性。 如果程序中的其他线程需要通过判断某个线程的状 ...
分类:
编程语言 时间:
2019-08-27 18:58:32
阅读次数:
96
线程队列 FIFO队列 LIFO 栈 优先级队列 事件Event 并发的执行某个任务 .多线程多进程,几乎同时执行. 一个线程执行到中间时通知另一个线程开始执行. 属性 第一版没用 Event 第2版用了 Event 协程的初识 一个线程实现并发. 并发,并行,串行: 串行: 多个任务执行时,第一个 ...
分类:
其他好文 时间:
2019-08-26 22:43:43
阅读次数:
115
关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的List,Map的原理更该如此.这里我们看这张图即可: 1、List、Set、Map是否继承自Collection接口? List、Set 是,Map 不是。Map是键值对映射容器,与List和Set有明显的区别,而Set存储的零散的元素 ...
分类:
编程语言 时间:
2019-08-20 19:06:52
阅读次数:
103
栈的概念与数据结构 栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。栈的底部很重要,因为在栈中靠近底部的元素是存储时间最长的。最近添加的元素是最先会被移除的。这种排序原则有时被称为 LIFO,后进先出。它基于在集 ...
分类:
其他好文 时间:
2019-08-17 01:05:29
阅读次数:
57
(1)数据结构:用来存储数据的容器 (2)常见的数据结构:数组 动态数组 链表 队列 堆栈 树 二叉树 图 (3)栈是一个LIFO的结构 Last In First Out,后进先出,有基于数组的栈和基于链表的栈 基于数组的栈 基于数组实现的数据结构 连续的内存地址, 数据查询速度非常快, 在尾部操 ...
分类:
编程语言 时间:
2019-08-11 11:09:52
阅读次数:
110
这是一个比较java经典的问题,面试的时的出场率非常高,尤其是对于初级程序员来说,这些都是比较比较重要的,相对他们了解的透彻,需要对栈内存和堆内存的区别。 Java堆内存 堆内存在Java运行时被使用来为对象和JRE类分配内存。不论什么时候我们创建了对象,它将一直会在堆内存上创建。垃圾回收运行在堆内 ...
分类:
其他好文 时间:
2019-08-04 13:49:19
阅读次数:
114