本文为个人学习笔记。昨天学习了表,写了个简单的单链表。今天看了下栈和队。 说白了:栈就是一个只能在头部插入和删除的表,遵循后进先出的原则;而队与栈的区别就是先进先出,从头部插入,底部删除。附代码 1 #include 2 using namespace std; 3 4 typedef str...
分类:
其他好文 时间:
2014-12-05 10:51:18
阅读次数:
212
一、栈的定义栈是限定仅在表尾进行插入和删除操作的线性表;栈又称为后进先出的线性表(LIFO)。栈顶:允许插入和删除操作的一端称为栈顶;而另一端则为栈底。栈的操作:插入数据称为进栈(压栈、入栈);栈的删除操作称为出栈(弹栈)。如下图所示: 二、栈的抽象数据类型 栈是一种特殊的线性表,因...
分类:
其他好文 时间:
2014-12-01 00:38:49
阅读次数:
192
之前写过栈的,以为队列的也一样,结果一点都不一样。写了好久啊。因为栈是后进先出,先进去的数字不会影响后面的数字;而队列是先进先出,后进去的会受先进入的数字的影响。比如: (先) 1 9 3 8 4 (后) 这样的序列栈存储 1 9 就可以了,因为9弹出后,自然 1 就是最大的队列...
分类:
其他好文 时间:
2014-11-21 23:05:01
阅读次数:
328
栈是一种先进后出或说是后进先出的数据结构,书中介绍了两种简单实现方法,其中使用链表的是比较方便的方式,而是用数组的方式效率比较高,但是需要初始化的时候指明最大数组元素上限个数。下面是简单实现:1.链表方式ListStack.cpp 1 /*栈的数组实现*/ 2 #include "iostream"...
分类:
其他好文 时间:
2014-11-20 01:20:38
阅读次数:
293
二叉堆我们知道堆栈是一种LIFO(后进先出)结构,队列是一种FIFO(先进先出)结构,而二叉堆是一种最小值先出的数据结构,因此二叉堆很适合用来做排序。二叉树的性质:二叉堆是一棵完全二叉树,且任意一个结点的键值总是小于或等于其子结点的键值,二叉堆采用数组来存储(按广度优先遍历的顺序),而没有像普通的树...
分类:
其他好文 时间:
2014-11-19 20:16:13
阅读次数:
174
算法分析:
本题是拓扑排序的典型应用。
由于顶点数量不多,可以采用邻接矩阵来存储图信息,这样算法比较简单,只需要搜索n次,每次把序号最小的入度为0的顶点存储到拓扑序列中就行了。算法思路比较清晰,代码也比较简洁,但时间复杂度和空间复杂度都较高。
另一种方法是采用邻接表存储图信息。由于题目要求输出时编号小的队伍在前,所以在入栈时一定要保证先让序号最小的入度为0的顶点在栈顶,这样根据后进先出的特点,可以把序号最小的顶点存储到拓扑序列中。我采用折半插入排序的方法,把入度为0的顶点按递减序排序,然后对图进行深度优先...
分类:
其他好文 时间:
2014-11-19 16:05:59
阅读次数:
174
栈是计算机控制过程调用和返回的常用技术。 栈是一个有序的元素集合,具备后进先出特点,所以只能通过栈顶访问元素。在计算机中操作栈需要三个地址,它们通常保存在处理器寄存器中。 栈指针:栈顶地址。当发生push或者pop操作时,这个指针会加1或者减1,以表示最新的栈顶指针; 栈底:保存栈...
分类:
其他好文 时间:
2014-11-19 13:55:33
阅读次数:
221
tips:今天预习四脚猫的php数据结构,看到这个例子,研究了一下,算是对栈结构有个初步了解。 栈,体现的是后进先出,即LIFO。队列,体现的是先进先出,即FIFO。栈array_pop() //尾出array_push() //尾进或array_shift()//头进array_unshift()...
分类:
编程语言 时间:
2014-11-18 23:48:06
阅读次数:
377
俗话说得好,线性表(尤其是链表)是一切数据结构和算法的基础,很多复杂甚至是高级的数据结构和算法,细节处,除去数学和计算机程序基础的知识,大量的都在应用线性表。一、栈其实本质还是线性表:限定仅在表尾进行插入或删除操作。 俗称:后进先出 (LIFO=last in first out结构),也可说是先进...
分类:
编程语言 时间:
2014-11-18 00:17:18
阅读次数:
257
LinkedList实现了List和Deque接口,其中Deque是一个双端队列,可以在头部和尾部两端添加和删除元素,因此LinkedList既可以当作先进先出的队列,也可以当作后进先出的栈。
LinkedList采用双向链表方式实现,因此插入、删除元素效率比较高,但不支持随机访问。
多线程环境下LinkedList不能保证线程安全,因此对其结构修改的操作应当程序员来保证线程安全,其迭代器支持fail-fast,迭代过程中试图发现是否发生修改,若修改了容器则抛出ConcurrentModificationE...
分类:
其他好文 时间:
2014-11-04 21:14:20
阅读次数:
338