通過遍歷,找到連結串列中的第N個結點
阿新 • • 發佈:2021-01-08
通過遍歷,找到連結串列中的第N個結點
程式碼示例:
class Node {
public int val;
public Node next;
public Node(int val) {
this.val = val;
}
}
public class MyLinkedList {
public Node head;//普通引用,目的是讓head一直指向當前列表的頭
public void createLinked() {
this.head = new Node(12);
Node node2 = new Node(22);
Node node3 = new Node(32);
Node node4 = new Node(42);
head.next = node2;
node2.next = node3;
node3.next = node4;
}
public void display() {//列印一個連結串列
Node cur = this.head;
while (cur != null) {
System.out.print (cur.val +" ");
cur = cur.next;
}
System.out.println();
}
public Node findN(int n) {
if (this.head == null){
System.out.println("連結串列為空");
return null;
}
if (n <= 0){
System.out.println("n的值不合理");
return null;
}
if (n >size()){
System.out.println("n太大了");
return null;
}
Node cur = this.head;
int count =1;
while (count != n ) {
cur = cur.next;
count ++;
}
return cur;
}
//得到單鏈表的長度
public int size(){
Node cur = this.head;
int count =0;
while (cur != null ) {
cur = cur.next;
count++;
}
return count;
}
public static void main(String[] args) {
MyLinkedList myLinkedList = new MyLinkedList();
myLinkedList.createLinked();
myLinkedList.display();
System.out.println("===================");
int n=4;
Node ret = myLinkedList.findN(n);
System.out.println("第" +n+ "個結點是" + ret.val);
}
結果:
總結:
1.由於while迴圈中是count和n比較,所以count要從1開始。
2.要把①連結串列是否為空,②n值是否合理,③n是否大於連結串列長度 這三種因素考慮進去。