`
IXHONG
  • 浏览: 450225 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

站在Java的角度看LinkedList

    博客分类:
  • Java
阅读更多

站在Java的角度看,玩队列不就是玩对象引用对象嘛!

 

public class LinkedList<E> implements List<E>, Deque<E> {
  Node<E> first;
  Node<E> last;
  int size;

  public boolean add(E e) {
        final Node<E> l = last;
        final Node<E> newNode = new Node<>(l, e, null);
        last = newNode;
        if (l == null)
            first = newNode;
        else
            l.next = newNode;
        size++;
        modCount++;
        return true;
    }

  private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;

        Node(Node<E> prev, E element, Node<E> next) {
            this.item = element;
            this.next = next;
            this.prev = prev;
        }
    } 
}

 单链表反转:

/**  
     * 递归,在反转当前节点之前先反转后续节点  
     */  
    public static Node reverse(Node head) {  
        if (null == head || null == head.getNextNode()) {  
            return head;  
        }  
        Node reversedHead = reverse(head.getNextNode());  
        head.getNextNode().setNextNode(head);  
        head.setNextNode(null);  
        return reversedHead;  
    }  
  
    /**  
     * 遍历,将当前节点的下一个节点缓存后更改当前节点指针  
     *   
     */  
    public static Node reverse2(Node head) {  
        if (null == head) {  
            return head;  
        }  
        Node pre = head;  
        Node cur = head.getNextNode();  
        Node next;  
        while (null != cur) {  
            next = cur.getNextNode();  
            cur.setNextNode(pre);  
            pre = cur;  
            cur = next;  
        }  
        //将原链表的头节点的下一个节点置为null,再将反转后的头节点赋给head     
        head.setNextNode(null);  
        head = pre;  
          
        return head;  
    }

 对于数组问题,一般我们要新建数组,必要时移动下标

0
0
分享到:
评论

相关推荐

    农行Java笔试题

    首先,从编程基础角度来看,Java语言的基础语法是重点,包括变量、数据类型、运算符、流程控制语句(如if、switch、for、while等)以及方法的定义与调用。笔试中可能会有编写简单程序的题目,考察考生对基础概念的...

    Java中的ArrayList的底层源码解读、LinkedList、Vector的区别介绍

    能学到什么:ArrayList的源码分析,自动扩容和自动缩容的源码分析,相关参数的深度解析,从是什么,为什么,怎么做三个角度进行讲解,用通俗易懂的白话进行介绍,LinkedList和Vector以及ArrayList的区别以及使用场景...

    Java code Java code

    由于没有提供具体代码的内容,我们将从Java语言的基础概念、核心特性以及常用编程实践的角度进行深入探讨。 1. **Java语言基础**:Java是一种面向对象的、跨平台的编程语言,由Sun Microsystems(现为Oracle公司)...

    多角度Java中的泛型

    在传统的Java中,集合类如ArrayList、LinkedList等都基于Object类型,这意味着它们可以存储任何类型的对象。然而,每次从集合中取出元素时,都需要进行类型转换,这不仅降低了代码的可读性,还可能导致运行时错误。...

    Java容器总结

    本文将深入探讨Java容器,并结合标签“源码”和“工具”,从源码层面和实用工具角度来分析这些知识点。 首先,Java容器是一个抽象的概念,它是指能够管理和协调Java对象生命周期的框架或库。Java中最常见的容器包括...

    Java面试神技.pdf

    面向对象编程强调站在对象的角度思考问题,将功能合理地分散到不同的对象中,每个对象都是具备某些功能的实体。面向过程编程则强调功能的执行顺序,通过函数(或方法)一步一步地实现。 6. 数据结构基础 数据结构是...

    java学习文档PDF版

    在Java中,数据结构通常表现为类和接口的形式,如ArrayList、LinkedList、HashMap等。这份文档会详细讲解各种数据结构,如数组、链表、栈、队列、树、图等,并通过Java语言进行实现。同时,算法是解决问题的步骤或...

    Introduction to Programming in Java 英文版

    8. **集合框架**:Java集合框架包含各种容器类,如ArrayList、LinkedList、HashSet、HashMap等。这些容器能有效地存储和管理对象。 9. **多线程**:Java提供了内置的多线程支持,使程序能够同时执行多个任务。书中...

    java项目开发实战

    根据提供的文件信息,“Java项目开发实战”这一主题主要聚焦于Java项目的实际开发过程与技巧,适合初学者作为入门指南来了解Java项目开发的基本流程和技术要点。下面将从多个角度深入探讨这一主题涉及的关键知识点。...

    动力节点Java基础301集_史上最全的Java基础教程

    2. **集合框架**:从数组扩容的角度引出集合的概念,讲解了集合的演变过程,帮助理解ArrayList和LinkedList等集合类的工作原理。这对于理解和使用Java集合库至关重要。 3. **String对象**:教程以独特的方式讲解...

    Java全国自考历年试卷参考答案.doc

    Java是一种广泛应用的高级编程语言,本文将从Java全国自考历年试卷参考答案的角度,总结出重要的知识点。 1. Java基本数据类型:Java中的基本数据类型包括整型、浮点型、字符型、布尔型等。这些数据类型在Java程序...

    java核心基础全套全方面练习题一份带答案

    在Java集合框架部分,你会接触到ArrayList、LinkedList、HashSet、HashMap等常见的数据结构。理解它们的区别和使用场景,能够帮助你更高效地组织和管理数据。例如,ArrayList适合快速访问,而LinkedList更适合插入和...

    java学生选课系统

    首先,从技术角度来看,这个系统基于Java的基础语法,包括类、对象、继承、封装等面向对象编程的核心概念。开发者可能使用了Java Swing或JavaFX库来创建GUI,这两个库提供了丰富的组件,如按钮、文本框、列表视图等...

    纯java版捕鱼达人!

    下面将详细探讨这款游戏中涉及到的Java技术及其在游戏开发中的应用。 首先,基础架构方面,Java的面向对象特性在这款游戏中得到了充分的体现。每个游戏元素,如鱼、炮台、子弹,都可以被设计为独立的类,每个类包含...

    JAVA毕业实习报告

    在Java毕业实习的过程中,我深入理解了Java编程语言的精髓和实际应用,这在专业技能提升和个人职业发展上都起到了至关重要的作用。Java是一种面向对象的编程语言,由Sun Microsystems开发,它的跨平台特性源于Java...

    高级程序员java考试题库及答案解析

    尽管它们的价格和作用距离相差很远,所以从互联网的角度来看,广域网和局域网却也是不平等的。** - **答案**: N (错误) - **解析**: 广域网(WAN)和局域网(LAN)在互联网中扮演着不同的角色,但它们在网络通信...

    java商场打折系统

    首先,从Java的角度来看,商场打折系统会涉及到以下几个关键知识点: 1. **Java基础**:作为项目的编程语言,Java的基础语法、类和对象的设计是必不可少的。你需要了解类的定义、封装、继承和多态等面向对象编程的...

    北大java教程 北大java教程

    5. **字符串与集合框架**:Java中的String类特性和常用操作,以及ArrayList、LinkedList、HashSet、HashMap等集合类的使用。 6. **输入/输出流**:理解I/O流的概念,学会使用File类进行文件操作,以及如何进行网络...

    java论文参考资料(供参考)

    这篇论文参考资料将深入探讨Java的核心概念、设计原则以及在实际应用中的重要性。附录中的英文翻译提供了对原理解读的国际视角,帮助读者更好地理解和应用这些知识。 1. **Java语言基础**: - 类与对象:Java是...

    JAVA期末考试试卷及答案打包

    它包含了两份PDF文件,分别可能是不同的版本或者重复内容,确保了考生可以从多个角度理解和掌握Java知识。 首先,我们来谈谈Java期末考试可能涵盖的知识点。Java的学习通常分为基础语法、面向对象编程、集合框架、...

Global site tag (gtag.js) - Google Analytics