java实现单链表

来源:互联网 发布:openstack源码解析 编辑:程序博客网 时间:2024/06/06 08:51

java实现单链表的难度关键在于插入。下面是我用java实现单链表的过程,着重介绍一下插入的实现与原理。

在实现插入前,首先新建一个Node类,这个类的主要成员变量为Element与next。

代码如下:

package list;public class Node {    private Object element;    private Node next;    public Node() {        // TODO Auto-generated constructor stub    }    public Node(Object element){        this.element = element;    }    public Node(Object element,Node next){        this.element = element;        this.next = next;    }    public Object getElement() {        return element;    }    public void setElement(Object element) {        this.element = element;    }    public Node getNext() {        return next;    }    public void setNext(Node next) {        this.next = next;    }}

然后实现insert方法,在实现insert的过程中,关键点在于先循环找到插入位置i之前的节点i-1,然后新建节点的指针指向i,将i-1的指针指向新建节点

代码如下:

    public void inset(int i, Object x) throws Exception {        Node p = head;        int j = 0;        while (p!=null&&j<i-1) {//          循环直到p为第i-1个节点            p = p.getNext();            j++;        }//      添加新节点,先得到p后的节点地址赋值给node.next;再将node地址赋值给p.next;        Node node = new Node(x);        node.setNext(p.getNext());        p.setNext(node);    }

这样,就实现了单链表中的插入方法,接下来是单链表的建表。单链表的建表分为头插法和尾插法。下面分别实现头插法与尾插法。

在头插法建表过程中,只要把insert方法中的插入位置i设为0即可。

代码如下:

    public Node headCreate(int n) throws Exception {        Scanner scanner = new Scanner(System.in);        for (int i = 0; i < n; i++) {//          读入n个object,将其用头插法插入单链表            inset(1, scanner.next());        }        scanner.close();        return head;    }

在尾插法建表过程中,只要把insert方法中的插入位置i设为读入顺序即可

代码如下

    public Node tailCreate(int n) throws Exception {        Scanner scanner = new Scanner(System.in);        for (int i = 1; i <= n; i++) {//          读入n个object,将其按读入顺序依次插入            inset(i, scanner.next());        }        scanner.close();        return head;    }

下面是源码的链接 http://download.csdn.net/detail/bigevil/8563675

0 0
原创粉丝点击