202009-24 java链表应用--基于链表实现队列详解(尾指针操作) 本文实例讲述了java基于链表实现队列。分享给大家供大家参考,具体如下:在开始栈的实现之前,我们再来看看关于链表的只在头部进行的增加、删除、查找操作,时间复杂度均为O(1)。一、链表改进分析对于队列这种数据结构,需要在线性结构的一端插入元素,另外一端删除元素。因此此时基于链表来实现队列,则有一端的时间复杂度为O(n)。因此我们不能使用之前已经实现的链表结构,我们需要改进我们的链表。思路如下:1.参考在链表头部删... 继续阅读 >
202009-24 Java基于链表实现栈的方法详解 本文实例讲述了Java基于链表实现栈的方法。分享给大家供大家参考,具体如下:在上几小节中我们实现了基本的链表结构,并在上一节的底部给出了有关链表的源码,此处在贴一次吧,猛戳在开始栈的实现之前,我们再来看看关于链表的只在头部进行的增加、删除、查找操作,时间复杂度均为O(1),基于链表的这几个优势,我们在此基础上实现栈。前言,在写本小节之前,我们已经实现了一个基于静态数组的栈,转到查看。此处我们实现基于链表的... 继续阅读 >
202009-24 Java链表(Linked List)基本原理与实现方法入门示例 本文实例讲述了Java链表(LinkedList)基本原理与实现方法。分享给大家供大家参考,具体如下:在分析链表之前,我们先来对之前的动态数组、栈、队列总结一下:(1)底层依托于静态数组(2)依靠resize解决固定容量问题(3)是一种假的的动态数据结构1.什么是链表可以从以下两个部分来理解什么是链表(1)最简单的动态数据结构,是一种真正的动态数据结构;(2)是一种数据的存储方式,数据存储在"节点"(Node)中1.1结构基本代码:... 继续阅读 >
201711-29 面试精选之链表问题集锦 链表问题是面试过程中经常被问到的一部分,很考查编程功底。最近刷了LeetCode上链表部分的面试题,我总结了一些有代表性的链表问题。本文使用的是Java语言,下面是所用到的链表节点的定义:publicclassListNode{intval;ListNodenext;ListNode(intx){val=x;}}1.在O(1)时间删除链表节点Leetcode237.DeleteNodeinaLinkedList题目描述:给定单链表中需要删除的... 继续阅读 >
201702-22 JAVA 常用集合内部机制原理 对于常用的集合大家都不陌生,但是深入到内部原理可能都是一知半解,通过阅读源码理解如下。ArrayListArrayList内部就是一个默认大小为10的动态对象数组容器,每当add一个新数据的时候,如果大于原来的容器大小,则会通过Arrays.copyOf把容器大小增加到原来的1.5倍,以此类推。当可以预知数据大小,可以通过initialCapacity来默认设置动态数据的大小,减少扩容带来的资源消耗。时间复杂度:get()-直接读取... 继续阅读 >