演算法 使用雙指標遍歷刪除鍊錶節點

2021-10-13 15:21:06 字數 605 閱讀 8298

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。

示例:給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.

思路:

1、讓兩個指標相距n的元素

2、兩個指標同時往後走,直到第二個指標指向null

3、第乙個指標的下乙個就是要刪除的元素

注意:一種特殊情況,刪除的是頭指標,根據兩個指標無法相距n的元素來判斷,直接返回head->next

struct listnode 

;struct listnode*

removenthfromend

(struct listnode* head,

int n)

if(count == n && q ==

null

)return head->next;

while

(q !=

null

) p->next = p->next->next;

return head;

}

核心鍊錶使用 刪除鍊錶節點

當我們使用遍歷的方法來刪除鍊錶時 list for each pos,student list list for each pos,head 這個巨集定義是用來遍歷鍊錶的,通過其第乙個引數pos來刪除鍊錶節點,但是,執行後就會出現以下錯誤 unable to handle kernel paging...

核心鍊錶使用 刪除鍊錶節點

核心鍊錶使用 刪除鍊錶節點 當我們使用遍歷的方法來刪除鍊錶時 list for each pos,student list list for each pos,head 這個巨集定義是用來遍歷鍊錶的,通過其第乙個引數pos來刪除鍊錶節點,但是,執行後就會出現以下錯誤 unable to handle...

核心鍊錶使用 刪除鍊錶節點

核心鍊錶使用 刪除鍊錶節點 當我們使用遍歷的方法來刪除鍊錶時 list for each pos,student list list for each pos,head 這個巨集定義是用來遍歷鍊錶的,通過其第乙個引數pos來刪除鍊錶節點,但是,執行後就會出現以下錯誤 unable to handle...