看不懂的链表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
public class NodeTest {
public static void main(String[] args) {
Node node1 = new Node(1, "李白1", "刺客1");
Node node2 = new Node(2, "李白2", "刺客2");
Node node3 = new Node(3, "李白3", "刺客3");
Node node4 = new Node(4, "李白4", "刺客4");
Node node5 = new Node(5, "李白5", "刺客5");

Node node6 = new Node(5, "李白", "刺客5");


SingleLinkedList singleLinkedList = new SingleLinkedList();
singleLinkedList.add(node1);
singleLinkedList.add(node2);

singleLinkedList.add(node4);
singleLinkedList.add(node5);
singleLinkedList.add2(node3);
singleLinkedList.delete(3);
singleLinkedList.delete(6);
singleLinkedList.change(node6);
singleLinkedList.change(1, "李白6", "刺客6");


singleLinkedList.show();
}
}

class SingleLinkedList{
private Node head=new Node(0, "", "");
public void add(Node node){
Node temp = head;
while (true){
if (temp.next == null){
break;
}
temp = temp.next;
}
temp.next = node;
}

public void add2(Node node){
Node temp = head;
boolean flag = false;
while (true){
if (temp.next == null){
break;
}
if (temp.next.no > node.no){
break;
}else if (temp.next.no == node.no){
flag = true;
break;
}
temp = temp.next;
}
if (flag){
System.out.println("编号已经存在,不能添加");
}else {
node.next = temp.next;
temp.next = node;
}
}

public void delete(int no){
Node temp = head;
boolean flag = false;
while (true){
if (temp.next == null){
break;
}
if (temp.next.no == no){
flag = true;
break;
}
temp = temp.next;
}
if (flag){
temp.next = temp.next.next;
}else {
System.out.println("不存在");
}
}
public void change(int no, String name, String type){
if(head.next == null){
System.out.println("链表为空");
return;
}
Node temp = head.next;
boolean flag = false;
while (true){
if(temp == null){
System.out.println("没有找到数据");
break;
}
if (temp.no == no){
flag = true;
break;
}
}
if (flag){
temp.name = name;
temp.type = type;
}
}
public void change(Node node){
Node temp = head;
//boolean flag = false;
delete(node.no);
add2(node);
}

public void show(){
if (head.next == null){
System.out.println("该链表为空");
return;
}
Node temp = head.next;
while (true){
if (temp == null){
break;
}
System.out.println(temp);
temp = temp.next;
}
}
}

class Node{
public int no;
public String name;
public String type;
public Node next;

public Node(int no, String name, String type){
this.no = no;
this.name = name;
this.type = type;
}

@Override
public String toString() {
return "Node{" +
"no=" + no +
", name='" + name + '\'' +
", type='" + type + '\'' +
'}';
}

}