数据结构
编程基础之数据结构
Peng Peng
从菜鸟走向大神
展开
-
[排序] 7种排序
选择排序原理:对于给定的的一组记录,经过第一轮比较好得到最小的记录,然后将该记录的第一个记录的位置进行交换,接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小的记录并与第二记录进行位置交换,重复该过程,直到只有一个记录为止以数组[3 8 1 6 4]为例第一轮排序后: 1 [3 8 6 4]第二轮排序后: 1 3 [8 6 4]第三轮排序后: 1 3 ...原创 2020-04-17 23:26:39 · 137 阅读 · 0 评论 -
[队列] 用链表实现的队列
上代码public class LinkedQueue<E> { private Node<E> head = null; public boolean isEmpty() { return head == null; } public E peek() { if(isEmpty()) { ...原创 2020-04-17 22:56:35 · 107 阅读 · 0 评论 -
[队列] 数组实现的队列
上代码public class Queue<E> { // 元素 private Object[] elements; // 队列的容量 private int size = 0; // 每次扩容的增量 private final int addCapacity = 10; public Queue() { ...原创 2020-04-17 22:30:49 · 149 阅读 · 0 评论 -
[栈] 链表实现的栈
直接上代码public class LinkedStack<E> { private Node<E> head = null; public boolean isEmpty() { return head == null; } public E peek() { if(isEmpty()) { ...原创 2020-04-17 21:33:20 · 112 阅读 · 0 评论 -
[栈] 数组实现栈
直接上代码public class Stack<T> { // 元素 private Object[] elements; // 栈的容量 private int size = 0; // 每次扩容的增量 private final int addCapacity = 10; public Stack() { ...原创 2020-04-17 21:15:32 · 84 阅读 · 0 评论 -
[链表] 查找链表中倒数第K个元素
核心思想是,遍历链表的过程中,有一个前置指针比后置指针先移动k-1位,然后二者同时移动,当前置指针移动到最末位的时候,后置指针刚好就是倒数第k位。直接上代码public class Main { public static Node findElem(Node head, int k) { if(k < 1) { return null;...原创 2020-04-17 12:52:06 · 332 阅读 · 0 评论 -
[链表] 删除链表中重复的节点
直接上代码,相关说明见代码注释public class Main { /** * 这种方法,时间复杂度,但是,有利用O(n)的辅助空间 * @param head */ public static void deleteDuplecate(Node head) { TreeSet<Integer> treeSet...原创 2020-04-17 12:05:54 · 122 阅读 · 0 评论 -
[链表] 链表基础
链表是最基本的数据结构,在程序设计中有着非常重要的作用。java中,我们这样定义链表的节点public class Node { int value; Node next; public Node(int value) { this.value = value; }}对链表最基本的操作就插入元素、删除元素、排序等,下面是一个自定义链...原创 2020-04-17 11:15:56 · 95 阅读 · 0 评论 -
[数组] 二维数组中查找
题目在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Find { public static void main(String[] args) { int[][] matrix = {{1, 2, 8, 9}, {2, 4, ...原创 2020-04-16 20:10:40 · 85 阅读 · 0 评论 -
[数组] 数组中重复的数
题目一在一个长度为n的数组里,所有数字都在0—n-1的范围内。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3.1 解法一 (借助辅助数组)数组中元素只能取0—n-1之间的数字,如果我们新建一个长度为n的辅助数组,辅助数组的所有元素初始...原创 2020-04-16 14:50:23 · 417 阅读 · 0 评论