1
1
package dataStructure .linkedList ;
2
2
3
+ import java .util .Scanner ;
3
4
4
5
class DATA {
5
6
String key ;// 结点的关键字
@@ -85,7 +86,7 @@ int CLDeleteNode(CLType head, String key){ // 删除关键字结点
85
86
}
86
87
htemp = head ;
87
88
tempnode = head ;
88
- while (htemp . nextNode != null ){
89
+ while (htemp != null ){
89
90
if (htemp .nodeData .key .compareTo (key )==0 ){ // 遍历查找
90
91
tempnode .nextNode = htemp .nextNode ;// 当前结点的引用指向下一个结点的引用,以此删除htemp结点
91
92
return 1 ;
@@ -110,8 +111,8 @@ int CLLength(CLType head){ //返回结点总数
110
111
void CLAllNode (CLType head ){// 遍历链表输出所有数据
111
112
CLType htemp ;
112
113
htemp = head ;
113
- System .out .printf ("当前链表共有 %d个结点。链表所有数据如下:\n " ,CLLength (head ));
114
- while (htemp . nextNode != null ){
114
+ System .out .printf ("\n 当前链表共有 %d个结点。链表所有数据如下:\n " ,CLLength (head ));
115
+ while (htemp != null ){
115
116
System .out .printf ("结点(%s,%s,%d)\n " ,htemp .nodeData .key , htemp .nodeData .name , htemp .nodeData .age );
116
117
htemp = htemp .nextNode ;
117
118
}
@@ -124,5 +125,67 @@ void CLAllNode(CLType head){ // 遍历链表输出所有数据
124
125
*
125
126
*/
126
127
public class LinkedList {
127
-
128
+ public static void main (String [] args ) {
129
+ CLType node ,head =null ;
130
+ CLType CL = new CLType ();
131
+ String key ,findkey ;
132
+ Scanner input = new Scanner (System .in );
133
+ System .out .println ("链表测试:\n 先输入链表中的数据,格式为:关键字 姓名 年龄 (键入0则结束)" );
134
+ do {
135
+ DATA nodeData = new DATA ();// 构造新结点
136
+ nodeData .key = input .next ();
137
+ if (nodeData .key .equals ("0" )){
138
+ break ;
139
+ }else {
140
+ nodeData .name = input .next ();
141
+ nodeData .age = input .nextInt ();
142
+ head = CL .CLAddEnd (head , nodeData );
143
+ }
144
+ }while (true );
145
+ CL .CLAllNode (head );// 遍历所有结点
146
+
147
+ System .out .printf ("\n 演示插入结点,输入插入位置的关键字:" );
148
+ findkey = input .next ();
149
+ System .out .printf ("\n 输入插入结点的数据(关键字 姓名 年龄)" );
150
+ DATA nodeData = new DATA ();// 构造新结点
151
+ nodeData .key = input .next ();
152
+ nodeData .name = input .next ();
153
+ nodeData .age = input .nextInt ();
154
+ head = CL .CLInsertNode (head , findkey , nodeData );
155
+ CL .CLAllNode (head );
156
+
157
+ System .out .printf ("\n 演示删除结点,输入要删除的关键字:" );
158
+
159
+ key =input .next ();
160
+ int result = CL .CLDeleteNode (head , key );
161
+ System .out .println (result ==1 ?"删除结点成功" :"删除结点失败" );
162
+ CL .CLAllNode (head );
163
+
164
+ System .out .printf ("\n 演示在链表中查找,输入查找关键字:" );
165
+
166
+ key = input .next ();
167
+ node = CL .CLFindNode (head , key );
168
+ if (node !=null ){
169
+ nodeData = node .nodeData ;
170
+ System .out .printf ("关键字%s 对应的结点为(%s,%s,%d)\n " ,key ,nodeData .key ,nodeData .name ,nodeData .age );
171
+ }else {
172
+ System .out .printf ("在链表中未查找到关键字为%s的结点!\n " ,key );
173
+ }
174
+ }
128
175
}
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
0 commit comments