用java实现泛型编程的单链表

来源:互联网 发布:js点击按钮上传文件 编辑:程序博客网 时间:2024/06/06 12:21

以下程序实现了单链表的基本操作(初始化、头插、尾插、打印、删除)

//单链表的节点结构设计class SLinked<T>{    private T data;//单链表的节点数据域    private SLinked<T> next;//单链表的节点节点域    public SLinked(T data){        this.data = data;        this.next = null;    }    public T getData() {        return data;    }    public void setData(T data) {        this.data = data;    }    public SLinked<T> getNext() {        return next;    }    public void setNext(SLinked<T> next) {        this.next = next;    }}//单链表的具体实现public class SLinkedList<T> {    private SLinked<T> head;    public SLinked<T> getHead() {        return head;    }    public void setHead(SLinked<T> head) {        this.head = head;    }    //单链表的初始化    public SLinkedList(T data){        this.head = new SLinked<T>(data);    }    //单链表的头插法    public void headInsert(T data){        SLinked<T> node = new SLinked<T>(data);        node.setNext(head.getNext());        head.setNext(node);    }    //单链表的尾插法    public void tailInsert(T data){        SLinked<T> node = new SLinked<T>(data);        if(head.getNext() == null){            head.setNext(node);        }else{            SLinked<T> p = head;            while(p.getNext() != null){                p = p.getNext();            }            p.setNext(node);        }    }    //单链表的删除    public boolean delete(T data){        SLinked<T> p = head.getNext();        SLinked<T> s = head;        while(p != null){            if(p.getData().equals(data)){                s.setNext(p.getNext());                return true;            }            s = p;            p = p.getNext();        }        return false;    }    //单链表的打印    public void show(){        SLinked<T> link = head.getNext();        while(link != null){            System.out.print(link.getData() + " ");            link = link.getNext();        }        System.out.println();    }    //单链表的测试用例    public static void main(String[] args) {        SLinkedList<Integer> list = new SLinkedList<Integer>(-1);        for(int i = 0; i < 5; i++){            list.headInsert(i);        }        for(int j = 0;  j< 5; j++){            list.tailInsert(j);        }        list.show();        list.delete(0);        list.delete(4);        list.delete(4);        list.show();    }}
0 0
原创粉丝点击