1. 程式人生 > 其它 >通過遍歷,找到連結串列中的第N個結點

通過遍歷,找到連結串列中的第N個結點

技術標籤:java語法單鏈表連結串列java

通過遍歷,找到連結串列中的第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是否大於連結串列長度 這三種因素考慮進去。