java数据结构之链表的实现

这个链表的内部是使用双向链表来表示的,但是并未在主函数中进行使用

  1 /**
  2  * 链表
  3  * 2016/4/26
  4  **/
  5 class LinkList{
  6     Node head = new Node();
  7     Node tail = new Node();
  8     int size = 0;
  9     public LinkList(){
 10         head.next = tail;
 11         this.head.date = "head";
 12         tail.last = head;
 13         tail.next = null;
 14         this.tail.date = "tail";
 15     }
 16     
 17 
 18     //内部节点类k
 19     class Node{
 20         String date;   //数据域
 21         Node next;    //指向下一个节点
 22         Node last;      //指向上一个节点
 23         Node(){};
 24         Node(String date){
 25            this.date = date; 
 26            this.next = null;
 27            this.next = null;
 28         }
 29     }
 30 
 31     //向链表中添加一个数据 在指定的位置上插入
 32     public void Insert(String date){
 33         Node newNode = new Node(date);
 34         newNode.next = this.head.next;
 35         newNode.last = this.head;
 36         this.head.next.last = newNode;
 37         this.head.next = newNode;
 38         System.out.println("插入数据"+date+"成功");
 39         this.size++;
 40     }
 41 
 42     //遍历链表输出
 43     public void PrintLink( LinkList linklist){
 44         Node preNode = new Node();
 45         preNode.next = this.head.next;
 46         System.out.print("遍历输出结果:");
 47             while(true){
 48                 System.out.print(preNode.next.date+" -->");
 49                 if(preNode.next.next.next == null)  break;
 50                 preNode.next = preNode.next.next;
 51             }
 52             System.out.println("遍历输出完成~~~");
 53     }
 54 
 55     //删除链表中的某一个数
 56     public void DeleteLink(String date){
 57         Node preNode = new Node();
 58         preNode = this.head;
 59         Node node = null;
 60         while(preNode.next != this.tail){
 61             
 62             node = preNode;
 63             preNode = preNode.next;
 64             if(preNode.date == date){
 65                 node.next = preNode.next;
 66                 System.out.println("删除元素"+date+"成功");
 67                 this.size--;
 68             }
 69         }
 70     }
 71 }
 72 
 73 public class DoublyLinkList{
 74     //主函数测试
 75     public static void main(String[] args){
 76         LinkList linklist = new LinkList();
 77         linklist.Insert("lv1");
 78         linklist.Insert("lv2");
 79         linklist.Insert("lv3");
 80         linklist.Insert("lv4");
 81         linklist.Insert("lv5");
 82         linklist.Insert("lv6");
 83         linklist.Insert("lv7");
 84         linklist.Insert("lv8");
 85         linklist.Insert("lv9");
 86         linklist.Insert("lv0");
 87         linklist.Insert("lv11");
 88         linklist.Insert("lv12");
 89         linklist.Insert("lv13");
 90         linklist.Insert("lv14");
 91         System.out.println("链表的长度为:"+linklist.size);
 92         linklist.PrintLink(linklist);
 93         //删除lvbiao3
 94         linklist.DeleteLink("lv3");
 95         linklist.PrintLink(linklist);
 96         
 97         linklist.DeleteLink("lv14");
 98         
 99         linklist.DeleteLink("lv12");
100 
101         linklist.PrintLink(linklist);
102         System.out.println("tail:"+linklist.tail.date);
103     }
104 }

 

posted on 2016-04-26 16:57  snail-lb  阅读(308)  评论(0编辑  收藏  举报