java链表

来源:互联网 发布:大草原上的小老鼠 知乎 编辑:程序博客网 时间:2024/06/15 18:09

1. Node 节点类

/** * 链接点 ,相当于是车厢 */public class Node {    // 数据域    public long data;    // 指针域    public Node next;       public Node(long value){        this.data = value;    }    /**     *  显示方法     */    public void display(){        System.out.println(data +" ");    }}

2. 链表类:

public class LinkList {    // 定义一个头结点    public Node first;    public LinkList() {        this.first = null;    }    // 插入头结点    public void addFirstNode(long data) {        Node node = new Node(data);        if (first != null) {            node.next = first;        }        first = node;    }    /**     * 尾部 插入     */    public void addEndNode(long data) {        Node node = new Node(data);        int pos = 0;        if (first == null) {            first = node;        }        Node current = first;        while (current.next != null) {            current = current.next;        }        current.next = node;    }    /**     * 删除一个头结点,并返回头结点     */    public Node deleteFirstNode() {        Node temp = first;        first = temp.next;        return temp;    }    /**     * 在任意位置插入结点,在index 的后面插入     */    public void add(int index, long data) {        Node node = new Node(data);        Node current = first;        Node previous = first;        int pos = 0;        while (pos != index) {            previous = current;            current = current.next;            pos++;        }        node.next = current;        if (index == 0) {            first = node;        } else {            previous.next = node;        }    }    /**     * 删除任意位置的结点     */    public Node deleteByPos(int index) {        int pos = 0;        Node previous = first;        Node current = first;        while (index != pos) {            previous = current;            current = current.next;            pos++;        }        if (current == first) {            first = current.next;        } else {            previous.next = current.next;        }        return current;    }    /**     * 通过数据删除结点     */    public Node deleteDyData(int data) {        Node current = first;        Node previous = first;        while (current.data != data) {            if (current.next == null) {                return null;            }            previous = current;            current = current.next;        }        if (current == first) {            first = current.next;        } else {            previous.next = current.next;        }        return current;    }    /**     * 显示出所有结点信息     */    public void displayNodes() {        Node current = first;        while (current != null) {            current.display();            current = current.next;        }    }    /**     * 通过位置查找结点信息     */    public Node findByPos(int index) {        Node current = first;        int pos = 0;        if (pos != index) {            current = current.next;            pos++;        }        return current;    }    /**     * 根据数据查找节点信息     */    public Node findByData(int data) {        Node current = first;        while (current.data != data) {            if (current.next == null)                return null;            current = current.next;        }        return current;    }}
原创粉丝点击