链表的Java实现

来源:互联网 发布:软件加锁怎么设置 编辑:程序博客网 时间:2024/05/05 06:08
import java.lang.System;public class Hello{    public static void main(String[] args)    {        LinkList List = new LinkList();        List.add(1);        List.add(2);        List.add(3);        List.add(4);        List.print();        int data;        data = List.deleteElemAt(2);        List.print();        System.out.println("the value of data deleted is :"+data);                List.reverse();        List.print();    }}class Node//元素结点{    public int data;    public  Node next;      public Node(int data)    {        this.data = data;        this.next = null;    }}class LinkList{    private Node head;//头结点指针    private int length;//链表长度    private Node tail;//尾结点指针        public LinkList()        {            head = new Node(0);            head.next = null;            tail = head;        }        public void insert(int index, int e)        {            if(index>this.length+1 || index<=0) return ;            if(index==this.length+1)             {                this.add(e);            }            Node p = this.head;            int i=0;            while(p.next != null)            {                ++i;                if(i==index)                {                    Node temp = new Node(e);                    temp.next = p.next;                    p.next = temp;                    ++this.length;                }                p = p.next;            }        }        public void add(int e)        {                    Node temp = new Node(e);                    this.tail.next = temp;                    this.tail = temp;                    ++ this.length;        }        public boolean isEmpty()        {            return length == 0;        }        public void reverse()        {            Node p = this.head.next;            Node q = null;            this.head.next = null;            while(p!=null)            {                q = p;                p=p.next;                q.next = this.head.next;                this.head.next = q;            }        }        public void print()        {            Node p = this.head.next;            while(p!=null)            {                System.out.print(p.data+"\t");                p=p.next;            }            System.out.println();        }        public int length()        {            return this.length;        }        public int deleteElemAt(int index)        {            if(index>this.length || index<=0) return -9999;            Node p = this.head;            int i = 0;            while(p.next != null)            {                ++i;                if(i==index)                {                    Node temp = p.next;                    p.next = temp.next;                             return temp.data;                }                p = p.next;            }            return  -9999;        }}//结果:D:\Tools\UltraEdit-32\Dataλ java Hello1       2       3       41       3       4the value of data deleted is :24       3       1
0 0