数据结构
iteye_6051
这个作者很懒,什么都没留下…
展开
-
栈和队列的实现
本文主要讲栈和队列的实现方法,所以仅简单介绍栈和队列的概念,如果有疑问可以去查有关栈和队列的详细资料。 栈 Stack(LIFO线性表): 栈是一种特殊的线性表,满足后进先出,它限定仅可以在表尾进行删除和增加。push(), pop(), peek(),empty()是它的三个重要的方法。push()是往栈里压入一个元素;pop()是弹出栈顶元素,栈顶指针指向下一个元素;peek()是返回...原创 2015-12-01 08:12:28 · 182 阅读 · 0 评论 -
二叉树的深搜和广搜
二叉树是计算机中一个重要的数据结构,在这里主要谈一下二叉树的深度优先搜索(DFS)和广度优先搜索(BFS)。 所谓DFS,就是沿着树的深度一直往下,一直到达一个叶子节点,然后再返回遍历剩余的节点。根据树的性质,树结构不存在环,因此遍历的时候不需要标记。如果在遍历一个图的时候,因为图中有环的存在,因此需要标记访问过的节点,以防止程序进入死循环。言归正传,树的DFS有三种方式,分别为:前序遍历,...原创 2015-12-02 12:40:55 · 852 阅读 · 0 评论 -
图的深搜和广搜
[b]DFS(深度优先遍历)[/b] 图的深度优先搜索和树的深度优先搜索思想很相似,都是从一个顶点v出发尽可能像纵深方向搜索,访问了顶点v,下一个访问与v相邻的顶点v1,然后以v1作为初始节点,依次访问后面的节点。对于深度优先搜索的实现,我们采用堆栈来实现。 递归实现DFS的伪代码: [code="java"] void dfs(vertex v) { if(v == null) re...原创 2015-12-07 13:08:50 · 395 阅读 · 0 评论 -
哈希表的实现
实现一个哈希表,首先我们要知道哈希表可以干什么,包含什么方法,实现哪些功能。 哈希表又叫散列表,是根据关键码值(Key, value)而直接进行访问的数据结构。oracle文档里面提到,用哈希表进行检索和存储,key首先要完成hashcode方法,以确定这个key属于哪个区间,也就是说具有相同hashcode的被放在同一块区间里,hashcode往往是取模得出的结果。 确定了位置,我们...原创 2015-12-10 02:27:46 · 93 阅读 · 0 评论 -
链表总结
[b]链表总结[/b] 链表也是计算机中一个重要的数据结构,有单向链表,双向链表等。和数组一样都是一种线性存储结构,但是它不能像数组那样通过下标查找数据,我们必须要知道链表的头结点,然后依次遍历来查找结果,在这一点上链表劣于数组;但是如果我们想删除一个数据,链表就比数组方便了很多,可以在O(1)的时间复杂度下完成,而数组删除元素需要移动其它元素,对于一个长度为n的数组删除一个节点i,时间复杂度为...原创 2015-12-11 14:20:42 · 61 阅读 · 0 评论 -
堆栈变体以及栈和队列的相互实现
前面讲到了如何用数组以及链表实现一个基本的堆栈和队列,这篇文章介绍如何实现一个可以在O(1)时间复杂度下得到最小元素的堆栈,以及用堆栈实现一个队列,用队列实现一个堆栈。 1,实现一个可以得到最小元素的堆栈, 要求pop(),push(),getMin()的时间复杂度都为O(1). 如果我们按照普通的思路,类中有两个成员变量,value和minValue,当pop一个元素后,我们就需要更...原创 2015-12-12 09:55:29 · 108 阅读 · 0 评论