java数据结构(循环链表)

来源:互联网 发布:医疗美容行业数据 编辑:程序博客网 时间:2024/05/09 18:57

本节是循环链表(所谓循环链表,就是一个环,尾巴接着头,所以最后一个结点的下一个节点是头结点,其遍历时判断下一个结点是不是头节点即可),参照单链表进行修改
http://blog.csdn.net/devenzero/article/details/52049786

public class loopLinkList {    Node head;    Node current;    int size;    loopLinkList(){        head = current =new Node(null);        head.next = head;        size =0;    }    public Object getElem(int i){        Node p =  head;        int j = 1;        while (j<i+1) {            p =  p.next;            ++j;            //System.out.println(p.element);        }        if(p==null||j>i+1) return null;        return p.element;    }    public boolean insert(int i ,Object e){        Node p =  head;        int j = 1;        while (j<i) {            p =  p.next;            ++j;        }        if(p==null||j>i) return false;        Node s  =  new Node(null);        s.element = e;        s.next = p.next;        p.next = s;        size++;        return true;    }    public boolean delete(int i ){        Node p =  head;        int j = 1;        while (j<i) {            p =  p.next;            ++j;        }        if(p==null||j>i) return false;        p.next = p.next.next;        size--;        return true;    }    public void showall(){        Node p =  head;        while (!(p.next.equals(head))) {            p =  p.next;            System.out.print(p.element+" ");        }        System.out.println();    }}

这里遇到的 一个问题是空指针

    loopLinkList(){        head = current =new Node(null);        head.next = head;        size =0;    }

这一段代码本来是这样子的

    loopLinkList(){        head = current =new Node(head);        size =0;    }

因head结点未声明,故遍历时报错,改完之后方正确运行

1 0
原创粉丝点击