数据结构
野鸭丁真
这个作者很懒,什么都没留下…
展开
-
图代码实现
方式一:邻阶矩阵实现①无向不带权图//该图为无向不带权图public class Graph { private int v;//矩阵的行列长 private boolean arr[][];//二维数组,如果为false代表与别的结点没有度 public Graph(int v,boolean[][] arr){ this.v=v; for(int i=0;i<v;i++){ for(int j原创 2021-09-08 22:46:52 · 288 阅读 · 0 评论 -
拓扑排序代码实现
有环,不可能拓扑排序。原创 2021-09-08 21:40:05 · 102 阅读 · 0 评论 -
哈夫曼树代码实现
public class Node implements Comparable<Node> { int value; Node left; Node right; public Node (int value) { this.value = value; } @Override public int compareTo(Node o) {//重写比较方法 return -(this.value - o...原创 2021-09-02 21:04:00 · 91 阅读 · 0 评论 -
一条语句判断一个整数是不是2的整数次方
if(n&(n-1))==0原创 2021-09-01 08:46:57 · 96 阅读 · 0 评论 -
二进制中1的个数
-任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4普通法,右移public class Solution { public int hammingWeight(int n) { int sum = 0;//计数器 while(n != 0) { if((n&1)==1) sum++; n>&原创 2021-09-01 08:39:47 · 79 阅读 · 0 评论 -
找出数组中重复的数字异或
因为A^A=0;A^0=A;所以将这n+1个含重复数字的数与n个不含重复的数做异或,最后只剩下那个重复的数了。(A^B^C^C^D^E^F)^(A^B^C^D^E^F)=Cpublic class HelloWorld { public static void main(String []args) { int[] arr=new int[]{1,2,3,4,5,6,7,7,8,9,10,11,12,13,14}; //找出重复的数字即7 int sum=0;.原创 2021-09-01 08:02:41 · 944 阅读 · 0 评论 -
线索化二叉树
//创建结点类public class ThreadedNode { //节点的权 int value; //左儿子 ThreadedNode leftNode; //右儿子 ThreadedNode rightNode; //标识指针类型 int leftType; int rightType; public ThreadedNode(int value) {//构造器 this.value=value.原创 2021-08-31 16:07:50 · 86 阅读 · 0 评论 -
搜索二叉树(未完成)
https://blog.csdn.net/UncleMing5371/article/details/54176252import javax.xml.soap.Node;/** * @author admin * @version 1.0.0 * @ClassName ThreadBinaryTree.java * @Description TODO * @createTime 2021年08月30日 18:43:00 */public class ThreadBinaryT原创 2021-08-30 21:00:32 · 76 阅读 · 0 评论 -
顺序存储的二叉树(类似于完全二叉树)
public class ArrayBinatyTree { int[] data;//该二叉树包含一个数组属性 public ArrayBinatyTree(int[] data){ this.data=data; } public void frontshow(){//构造方法,直接从最顶处结点开始前序遍历 frontshow(0); } public void frontshow(int index){ .原创 2021-08-29 16:39:23 · 89 阅读 · 0 评论 -
循环队列代码实现
import java.util.NoSuchElementException;/** * @author admin * @version 1.0.0 * @ClassName CyclicArrayQueue.java * @Description TODO * @createTime 2021年08月21日 19:46:00 */public class CyclicArrayQueue<E> { private int front;//队首 pri...原创 2021-08-21 20:13:08 · 198 阅读 · 0 评论 -
数组(无泛型代码实现)
package com.company; public class Main { public static void main(String[] args) { // write your code here Array arr=new Array(20); for (int i=0;i<10;i++){ arr.addLast(i); } System.out.println(arr); .原创 2021-08-21 16:00:44 · 66 阅读 · 0 评论 -
数组带泛型,动态数组(可扩容)代码实现
java中对数组元素进行增减,不可再原数组上操作,开辟一个新数组通过一一赋值接受增减后的原数组,最后再用arr=newarr;二者指向堆空间的同一内容。堆空间用于存储new出来的对象或数组。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量对应数组或者对象在堆内存中的首地址,通过该地址值指向堆空间。这就是 Java 中的指针public class Main { public static void main(String[] args) { //...原创 2021-08-21 15:59:11 · 119 阅读 · 0 评论 -
二叉树的建立及前中后序遍历及查找指定元素以及删除子树的代码实现
//树的建立public class Binarytree { TreeNode root; public void setRoot(TreeNode root) { this.root = root; } public TreeNode getRoot() { return root; } public void frontShow(){ root.frontShow(); } .原创 2021-08-17 08:35:54 · 138 阅读 · 0 评论 -
冒泡排序代码实现
import java.util.Arrays;/** * @author admin * @version 1.0.0 * @ClassName BubbleSort.java * @Description TODO * @createTime 2021年08月16日 10:22:00 * //冒泡排序。 */public class BubbleSort { public static void main(String[] args) { int[] arr=new.原创 2021-08-16 16:57:17 · 57 阅读 · 0 评论 -
双向链表代码实现
/** * @author admin * @version 1.0.0 * @ClassName DoubleNode.java * @Description TODO * @createTime 2021年08月15日 09:51:00 */public class TestDoubleNode { public static void main(String[] args) { DoubleNode n1 = new DoubleNode(1); .原创 2021-08-16 16:55:59 · 70 阅读 · 0 评论 -
循环链表代码实现
/** * @author admin * @version 1.0.0 * @ClassName Node.java * @Description TODO * @createTime 2021年08月15日 09:34:00 */public class TestLoopNode { public static void main(String[] args) { LoopNode n1= new LoopNode(1); LoopNode n2=.原创 2021-08-16 16:53:51 · 95 阅读 · 0 评论 -
链表LinkedList(不带头结点)代码实现
/** * @author admin * @version 1.0.0 * @ClassName LoopNode.java * @Description TODO * @createTime 2021年08月15日 09:31:00 */public class NodeTest { public static void main(String[] args) { Node node1=new Node(1); Node node2 = new N.原创 2021-08-16 16:49:18 · 108 阅读 · 0 评论 -
插入排序代码实现
import java.util.Arrays;/** * @author admin * @version 1.0.0 * @ClassName InsertSort.java * @Description TODO * @createTime 2021年08月16日 16:19:00 * //插入排序 */public interface InsertSort { public static void main(String[] args) { int[] arr=.原创 2021-08-16 16:45:53 · 55 阅读 · 0 评论 -
队列代码实现
public class test1 { public static void main(String[] args) { myqueue mq=new myqueue(); System.out.println(mq.isempty()); mq.add(90); mq.add(403); mq.add(430); System.out.println(mq.poll()); }}p.原创 2021-08-14 17:08:01 · 147 阅读 · 0 评论 -
栈代码实现
public class test { public static void main(String[] args) { mystack ms=new mystack(); ms.push(23); ms.push(356); ms.push(4083); ms.push(4304); System.out.println(ms.peek()); ms.pop(); Sy.原创 2021-08-14 17:06:42 · 70 阅读 · 0 评论 -
二分查找法
查找·的·数组已经排好序了,时间复杂度log2n。如果(begin+end)超过int ,可以使用 begin+(end-begin)/2防止溢出。public class Main { public static void main(String[] args) { int[] arr=new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}; int t=30; int begin=0;原创 2021-08-14 15:56:12 · 56 阅读 · 0 评论