基礎定義
public static class ListNode {
int val;
ListNode next = null;
public ListNode(int val) {
this.val = val;
}
}
借用leetcode的第19題來記錄ListNode的使用
-
給你一個鏈表,刪除鏈表的倒數第
n
個結點,並且返回鏈表的頭結點。示例 1:
輸入:head = [1,2,3,4,5], n = 2 輸出:[1,2,3,5]
示例 2:
輸入:head = [1], n = 1 輸出:[]
示例 3:
輸入:head = [1,2], n = 1 輸出:[1]
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode ans=new ListNode(0);//定義一個頭節點
ans.next=head;//頭節點指向這個鏈表
ListNode listnode = ans;//每次調用這個鏈表只需要定義一個節點等於這個頭節點
int length=0;
while(listnode.next!=null){//統計鏈表長度
length++;
listnode=listnode.next;
}
ListNode temp =ans;
for(int i = 1;i<length-n+1;i++){
temp=temp.next;
}
temp.next=temp.next.next;//在倒數第n個位置前使鏈表的當前節點指向n的下一個位置
return ans.next;//這樣做最后返回這個頭節點的next就是返回了這個新的鏈表
}
}