编程导航算法通关村第1关 | 链表青铜学习

1.Java 如何构造链表?

        单链链表就像一个铁链由多个结点组成,每个结点包括指向下一个结点的next指针和数据,

JVM有堆区和栈区,栈区存引用,也就是实际对象的地址,堆区存的是创建的对象,大概是这样的

public class course{
/**
        Teacher teacher;
        Student student;
        teacher,student就指向堆的引用
*/

        int var;
        Course next;
}

//在Java中根据面向对象
public class ListNode {
    private int data;
    private ListNode node;

    public ListNode(int data) {
        this.data = data;
    }

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public ListNode getNode() {
        return node;
    }

    public void setNode(ListNode node) {
        this.node = node;
    }
}

2.链表元素增加,首部,中间和尾部分别会有什么问题,该如何处理?

2.1 首部插入

        需要注意的是head需要重新指向头部,

编程导航算法通关村第1关 | 链表青铜学习_第1张图片

//操作
newNode.next = head;
head = newNode;

2.2中间插入

        首先遍历找到需要插入的位置,需要将要插入结点接到的前驱结点和后驱结点,在目标结点的前一个位置停下来,用cur.next的值判断。

编程导航算法通关村第1关 | 链表青铜学习_第2张图片

newNode.next = cur.next;
cur.next = newNode;

2.3尾部插入

        尾部插入只需将未结点指向新结点即可。

cur.next = newNode;
newNode.next = null;

心得:搞懂基本原理写代码还是很简单的,刚开始可能变量标识有点不熟,搞懂插入,单链表删除和多链表插入删除,类推就好了,脑子中有图的大概,就是指针指向的转换问题,刚开始真的很难,慢慢来。

你可能感兴趣的:(算法通关村专栏,算法,链表,学习)