4、链表

来源:互联网 发布:2016年淘宝类目销售额 编辑:程序博客网 时间:2024/06/06 01:22

1、链接点

public class MyLink {    private int data;    private MyLink next;    public MyLink(int data){        this.data = data;    }    public int getData() {        return data;    }    public void setData(int data) {        this.data = data;    }    public MyLink getNext() {        return next;    }    public void setNext(MyLink next) {        this.next = next;    }}

测试:

public class TestLink {    public static void main(String[] args) {        MyLink myLink1 = new MyLink(10);        MyLink myLink2 = new MyLink(20);        MyLink myLink3 = new MyLink(30);        MyLink myLink4 = new MyLink(40);        myLink1.setNext(myLink2);        myLink2.setNext(myLink3);        myLink3.setNext(myLink4);        System.out.println(myLink1.getData());        System.out.println(myLink1.getNext().getData());        System.out.println(myLink1.getNext().getNext().getData());        System.out.println(myLink1.getNext().getNext().getNext().getData());    }}

2、链表的基本实现:

链接点:

public class Link {    private int data;    private Link next;    public Link(int data){        this.data = data;    }    public int getData() {        return data;    }    public void setData(int data) {        this.data = data;    }    public Link getNext() {        return next;    }    public void setNext(Link next) {        this.next = next;    }}

链表实现:

public class LinkList {    private Link first;    //正常插入,都是在第一个插入    public void insert(int value){        Link link = new Link(value);        if(first == null){            first = link;        }else {            link.setNext(first);            first = link;        }    }    public void display(){        Link current = first;        while(current!=null){            System.out.print(current.getData()+" ");            current = current.getNext();        }    }    //查找元素    public Link search(int value){        Link current = first;        while(current.getData() != value){            if(current.getNext() == null){                return null;            }            current = current.getNext();        }        return current;    }    //将数据插入到指定位置    public void insert(int value,int pos){        if(pos == 0){            insert(value);        }else {            Link current = first;            for(int i=0; i<pos-1; i++){                current = current.getNext();            }            Link link = new Link(value);            link.setNext(current.getNext());            current.setNext(link);        }    }    //删除指定的节点    public void delete(int value){        Link current = first;        Link ago = first;        while(current.getData()!=value){            if(current.getNext()==null){                return;            }else {                ago = current;                current = current.getNext();            }        }        if(current == first){            first = first.getNext();        }else {            ago.setNext(current.getNext());        }    }}

测试:

public class TestLink02 {    public static void main(String[] args) {        LinkList linkList = new LinkList();        linkList.insert(10);        linkList.insert(20);        linkList.insert(30);        linkList.insert(40);        linkList.insert(50);        linkList.display();        System.out.println("找到的节点数据是:"+linkList.search(10).getData());        System.out.println("=================");        linkList.insert(111,2);        linkList.display();        System.out.println();        System.out.println("=================");        linkList.delete(20);        linkList.display();    }}