数据结构
文章平均质量分 92
「已注销」
这个作者很懒,什么都没留下…
展开
-
【数据结构】顺序表的基本操作
顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。顺序表的基本实现操作:增(头插、尾插、在 index 下标下插入给定的 elment 值)删(头删、尾删、删除给定的 index 下标的值)查(根据已知的...原创 2019-10-17 15:08:59 · 242 阅读 · 0 评论 -
【数据结构】链表的基本应用2
1.删除排序链表中的重复元素(删除重复的元素,使每个元素值只出现一次)public ListNode deleteDuplicates1(ListNode head) { ListNode cur = head; while(cur != null && cur.next != null) { if(cur.next.va...原创 2019-10-21 21:38:04 · 102 阅读 · 0 评论 -
【数据结构】栈和队列
栈和队列一、栈:1.概念:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。2.实现:利用顺序表实现,即使用尾插 + 尾删的方式实现利用链...原创 2019-10-24 21:25:17 · 126 阅读 · 0 评论 -
【数据结构】链表的实现
继上篇:删除 val的值、有序合并两个链表(从小到大)class Node { int val; Node next = null; public Node(int val) { this.val = val; }}public class Solution { //删除 val的值 Node removeAll(No...原创 2019-10-17 17:20:47 · 73 阅读 · 0 评论 -
【数据结构】循环队列
循环队列(通常用数组表示)数组下标循环的小技巧下标最后再往后(offffset 小于 array.length): index = (index + offffset) % array.length下标最前再往前(offffset 小于 array.length): index = (index + array.length - offffset) % array.length循环...原创 2019-10-26 12:15:27 · 168 阅读 · 0 评论 -
【数据结构】栈和队列的基本应用
括号匹配问题class Solution { public boolean isValid(String s) { if (s.length() == 0) return true; if ((s.length() & 1) == 1) return false; Stack<...原创 2019-10-26 12:12:26 · 120 阅读 · 0 评论 -
【数据结构】链表---移除链表元素
删除链表中等于给定值 val 的所有节点示例:输入: 1->3->5->7, val = 3输出: 1->5->7代码:建立一个 Node 类,val 代表目标值,next代表链表中结点的下一个指向class Node { int val; Node next; // 如果 next == null 表示是最后一个结点 Node(int val)...原创 2019-07-26 16:28:21 · 251 阅读 · 0 评论 -
【数据结构】链表的基本操作
链表(重要)一、概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。二、实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:单向、双向带头、不带头循环、非循环常用链表:1.无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试...原创 2019-10-17 16:06:48 · 248 阅读 · 0 评论 -
【数据结构】链表的基本应用1
1.移除链表元素(删除头结点时另做考虑)public ListNode removeElements(ListNode head, int val) { if(head == null){ return head; } ListNode rs = new ListNode(0); rs.next = hea...原创 2019-10-21 20:44:19 · 132 阅读 · 0 评论 -
【数据结构】树与二叉树
树相关概念:节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6树的度:一棵树中,最大的节点的度称为树的度; 如上图:树的度为6叶子节点或终端节点:度为0的节点称为叶节点; 如上图:B、C、H、I…等节点为叶节点双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B的父节点孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点...原创 2020-04-07 19:59:06 · 325 阅读 · 0 评论 -
【数据结构】双向链表的实现
双向链表的基本操作的实现(与单向链表相比,在此基础上多加了一个前驱结点)class Node { int val; Node next = null; // 指向后继结点,最后一个结点的 next == null Node prev = null; // 指向前驱结点,第一个结点的 prev == null Node(int val) { ...原创 2019-10-17 17:23:25 · 88 阅读 · 0 评论 -
【数据结构】七大排序算法
排序算法一、概念排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。二、分类三、排序1.直接插入排序分析:通过构建有序序列,当要插入第i个元素时,前面的array[0]、array[1]、array[2]….,array[i-1]已经有序,然后用array[i]和之前的有序序列中的数依次进行比较,选择合适的位置插入,然后将插入位置的数顺序往后移。步骤:从第一个元素开始,认为第一个元素已经被排序取出下一个元素,在已排好序的序列中从后往前扫描如果该元素(原创 2020-06-19 18:51:36 · 382 阅读 · 0 评论 -
【数据结构】二叉树遍历2
二叉树遍历1.前序遍历(非递归) /** * 前序遍历(非递归方式) * 1.先入栈根结点,输出根结点value值,再先后入栈其右结点、左结点; * 2.出栈左结点,输出其value值,再入栈该左结点的右结点、左结点;直到遍历完该左结点所在子树。 * 3.再出栈右结点,输出其value值,再入栈该右结点的右结点、左结点;直到遍历完该右结点所在子树。 * @param root */ public static void preOrder(Tr原创 2020-06-14 18:09:45 · 567 阅读 · 0 评论 -
【数据结构】二叉树遍历1
代码实现(细节)public static class Node { public char val; //public int val; public Node left = null; public Node right = null; private Node(char val) { this.val = val; } @Override pub原创 2020-06-14 17:06:20 · 380 阅读 · 0 评论