java实现单链表

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.youkuaiyun.com/detail/bigevil/8563675

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值