Java基础知识之链表实现

105 阅读1分钟

Java基础知识篇

1. 链表的基础知识

package com.leecode.competition.link;
​
public class LinkNode {
    private int val;
    private LinkNode next;
​
    public int getVal() {
        return val;
    }
​
    public void setVal(int val) {
        this.val = val;
    }
​
    public LinkNode getNext() {
        return next;
    }
​
    public void setNext(LinkNode next) {
        this.next = next;
    }
}

2. 实现链表的新增和删除

package com.leecode.competition.link;
​
import java.util.Random;
​
public class LinkBase {
    private LinkNode mLinkNode;
​
    public void test() {
        mLinkNode = addLinkNode(0);
        for(int i=1;i<10;i++){
            addLinkNode(i);
        }
        Random r = new Random();
        deleteLinkNode(r.nextInt(10));
        printLinkNode(mLinkNode);
    }
​
    private void printLinkNode(LinkNode node) {
        if (node == null) {
            return;
        }
​
        LinkNode tempNode = node;
        while (tempNode != null) {
            System.out.println(tempNode.getVal());
            tempNode = tempNode.getNext();
        }
    }
​
    private LinkNode addLinkNode(int value) {
        LinkNode node = new LinkNode();
        node.setVal(value);
        if (mLinkNode == null) {
            mLinkNode = node;
            return mLinkNode;
        }
        LinkNode tempNode = mLinkNode;
        while (tempNode.getNext() != null){
            tempNode = tempNode.getNext();
        }
​
        tempNode.setNext(node);
        return mLinkNode;
    }
​
    private LinkNode deleteLinkNode(int value){
        if(mLinkNode == null){
            return null;
        }
​
        LinkNode nodeCurrent = mLinkNode;
        if(nodeCurrent.getVal() == value){
            mLinkNode = nodeCurrent.getNext();
        }else {
            LinkNode nodeHead = mLinkNode;
            nodeCurrent = nodeCurrent.getNext();
            while (nodeCurrent.getVal() != value && nodeCurrent != null) {
                nodeCurrent = nodeCurrent.getNext();
                nodeHead = nodeHead.getNext();
            }
            nodeHead.setNext(nodeCurrent.getNext());
        }
​
        return mLinkNode;
    }
}

打印值如下所示:

1 2 3 4 5 6 7 8 9