Java数据结构和算法
西楚小羽的窝窝
奔跑吧,程序猿
展开
-
Java用链表实现栈和队列
1、用链表实现栈package stack;/** * * @author denghb * */class Link { public long dData; public Link next; public Link(long dd) { dData = dd; } public void displayLink() { System.out.print(d原创 2015-06-24 08:35:18 · 1792 阅读 · 0 评论 -
Java数组实现循环队列的两种方法
用java实现循环队列的方法:1、增加一个属性size用来记录目前的元素个数。目的是当head=rear的时候,通过size=0还是size=数组长度,来区分队列为空,或者队列已满。2、数组中只存储数组大小-1个元素,保证rear转一圈之后不会和head相等,也就是队列满的时候,rear+1=head,中间刚好空一个元素。 当rear=head的时候,一定是队列空了。队列原创 2015-06-23 12:48:32 · 6276 阅读 · 0 评论 -
Java对二叉搜索树进行插入、查找、遍历、最大值和最小值的操作
1、首先,需要一个节点对象的类。这些对象包含数据,数据代表存储的内容,而且还有指向节点的两个子节点的引用class Node { public int iData; public double dData; public Node leftChild; public Node rightChild; public void displayNode() { System.out.p原创 2015-06-25 15:21:41 · 2193 阅读 · 0 评论 -
Java实现二叉搜索树节点的删除
前言:之前写过一篇关于二叉搜索树的博客:Java对二叉搜索树进行插入、查找、遍历、最大值和最小值的操作 二叉查找树重要性质:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;如图:这次我想分享的是二叉搜索树中节点是如何删除的,删除节点是二叉搜索树原创 2015-07-02 10:33:31 · 2618 阅读 · 0 评论 -
用两个栈实现队列&&用两个队列实现一个栈
一.两个栈实现一个队列思路:所有元素进stack1,然后全部出stack1并进入stack2.实现队列的先进先出即:若stack2非空,我们需要的恰好在栈顶,出栈;若要给队列添加元素,即先进sack1,要出队时,若stack2不为空就出栈,为空时就把stack1全部进栈到stack2。ps:图片原创于剑指offer,来自网络import java.util.ArrayLis原创 2015-12-28 22:32:53 · 511 阅读 · 0 评论 -
图的理解:存储结构与邻接矩阵的Java实现
存储结构要存储一个图,我们知道图既有结点,又有边,对于有权图来说,每条边上还带有权值。常用的图的存储结构主要有以下二种:邻接矩阵邻接表邻接矩阵我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一维数组来表示了,我们可以用二维数组来表示,也就是一个矩阵形式的表示方法。我们假设A是这个二维数组,那么A中的一个元素原创 2015-12-29 22:33:23 · 1162 阅读 · 0 评论 -
深度优先和广度优先遍历及其 Java 实现
图的遍历有两种遍历方式:深度优先遍历(depth-first search)和广度优先遍历(breadth-first search)。因为深度优先需要无路可走时按照来路往回退,正好是后进先出。广度优先则需要保证先访问顶点的未访问邻接点先访问,恰好就是先进先出。深度优先深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接原创 2015-12-30 12:43:43 · 1103 阅读 · 0 评论