单向链表的Java实现

1、

 1 class Node{
 2     private String data;
 3     private Node next;
 4     public Node(String data){
 5         this.data = data;
 6     }
 7     public String getData(){
 8         return this.data;
 9     }
10     public void setNext(Node next){
11         this.next = next;
12     }
13     public Node getNext(){
14         return this.next;
15     }
16 }
17 public class LinkDemo01 {
18 
19     public static void main(String[] args) {
20         Node root = new Node("火车头");
21         Node n1 = new Node("车厢A");
22         Node n2 = new Node("车厢B");
23         Node n3 = new Node("车厢C");
24         root.setNext(n1);
25         n1.setNext(n2);
26         n2.setNext(n3);
27         PrintNode(root);
28     }
29 
30     private static void PrintNode(Node node) {
31         System.out.println(node.getData() + "\t");
32         if(node.getNext() != null){
33             PrintNode(node.getNext());
34         }
35     }

输出结果为:

火车头
车厢A
车厢B
车厢C

2、

 1 class Link{
 2     class Node{
 3         private String data;
 4         private Node next;
 5         public Node(String data){
 6             this.data = data;
 7         }
 8         public void add(Node newNode){
 9             if(this.next == null){
10                 this.next = newNode;
11             }else{
12                 this.next.add(newNode);
13             }
14         }
15         public void print(){
16             System.out.println(this.data + "\t");
17             if(this.next != null){
18                 this.next.print();
19             }
20         }
21         public boolean search(String data){
22             if(data.equals(this.data)){
23                 return true;
24             }else{
25                 if(this.next != null){
26                     return this.next.search(data);
27                 }else{
28                     return false;
29                 }
30             }
31         }
32         public void delete(Node previous,String data){
33             if(data.equals(this.data)){
34                 previous.next = this.next;
35             }else{
36                 if(this.next != null){
37                     this.next.delete(this, data);
38                 }
39             }
40         }
41     }
42     private Node root;
43     public void addNode(String data){
44         Node newNode = new Node(data);
45         if(this.root == null){
46             this.root = newNode;
47         }else{
48             this.root.add(newNode);
49         }
50     }
51     public void printNode(){
52         if(this.root != null){
53             this.root.print();
54         }
55     }
56     public boolean contain(String name){
57         return this.root.search(name);
58     }
59     public void deletNode(String data){
60         if(this.contain(data)){
61             if(this.root.data.equals(data)){
62                 this.root = this.root.next;
63             }else{
64                 this.root.next.delete(root, data);
65             }
66         }
67     }
68 }
69 
70 public class LingDemo02 {
71 
72     public static void main(String[] args) {
73         Link l = new Link();
74         l.addNode("A");
75         l.addNode("B");
76         l.addNode("C");
77         l.addNode("D");
78         l.addNode("E");
79         
80         l.printNode();
81         
82         l.deletNode("C");
83         
84         System.out.println();
85         
86         l.printNode();
87         
88         System.out.println();
89         
90         System.out.println(l.contain("A"));
91         
92     }
93 
94 }

输出结果为:

A
B
C
D
E

A
B
D
E

true

posted @ 2017-08-09 16:23  XuGuobao  阅读(204)  评论(0编辑  收藏  举报