数据结构
宋丹尼尔
不相信莫名其妙的事情
展开
-
栈和队列的互相转换
用两个栈实现一个队列,包括入队,出队,弹出队首元素,判断队列是否为空功能。 import java.util.Stack; public class StackToQueue<T> { private Stack<T> s1 = new Stack<>(); private Stack<T> s2 = new Stack<>(); //入队 public void offer(T val){ thi原创 2021-05-30 22:48:47 · 163 阅读 · 0 评论 -
自定义队列和自定义循环队列
用链表自定义实现一个队列,包括入队,出队,弹出队首元素,队列是否为空功能 class Node<T>{ public T val; public Node<T> next; public Node(T val){ this.val = val; } } public class MyQueue<T>{ public Node<T> first;//队头 public Node<T> l原创 2021-05-30 21:09:26 · 116 阅读 · 0 评论 -
自定义一个栈
基于数组创建一个栈,有入栈,出栈,弹出栈顶元素,判断栈是否为空,是否为满功能。 public class MyStack<T> { private T[] elem; private int top=0; //top表示当前可以存放元素的下标 //构造方法,初始化一个长度为5的数组 public MyStack(){ this.elem = (T[])new Object[5]; } //入栈 public T push(T原创 2021-05-29 23:05:15 · 877 阅读 · 0 评论 -
二叉树四种遍历方式总结——非递归
实现二叉树先序,中序,后序以及层序遍历 1、先序遍历 具体步骤: 1、创建一个栈和一个ArrayList。 2、先让根节点入栈。 3、当栈不为空时,栈顶出栈,并将出栈节点值保存到ArrayList中,然后再依次将出栈节点的右子节点,左子节点入栈。 ps:因为前序遍历要左子节点在右子节点前面,所以先入栈右子节点,后入栈左子节点(栈是先进后出) 代码展示: public void preorder(TreeNode root,ArrayList<Integer> list){ if(原创 2021-05-26 14:51:39 · 209 阅读 · 4 评论 -
排序算法总结
为了统一起见,我先给出一个主函数,条例比较清晰 public static void main(String[] args) { int[] array = {34,2,67,88,54,33,78,22,4,90,86,45,6,12,99}; System.out.println(Arrays.toString(array)); insertSort(array); System.out.println("直接插入排序:"+Arrays.t原创 2021-05-20 21:18:40 · 149 阅读 · 3 评论