單向鍊錶 二 刪除指定位置的節點

2021-06-23 00:40:15 字數 1289 閱讀 9012

1、刪除單向鍊錶中的某個節點,比如刪除第3個節點,如下圖所示:

2、為了便於說明,將節點的位置 作為 節點的資料值。由圖可知,要刪除第3個節點,只要先使第2個節點指向第4個節點,構成乙個新的鍊錶1 -> 2 -> 4;接著釋放第3個節點就可以了。

3、具體實現函式**:

tagnode* deletenode(tagnode *phead, int location)

// 如果要刪除的是頭結點(location == 1)

if (location == 1)

else

}ncount++;

// 刪除非頭結點

while (ptemp)

else

}printf("位置%d處無節點!\n", location);

return phead;

}

void deletenode(tagnode **phead, int location)

// 如果要刪除的是頭結點(location == 1)

if (location == 1)

else

return;

} ncount++;

// 刪除非頭結點

while (ptemp)

else

}printf("位置%d處無節點!\n", location);

}

4、幾個注意點:

一、判斷待刪除的節點是否為頭結點;

二、注意傳入的位置值(location)是否有效;

三、注意鍊錶節點只有乙個時的情況。

5、main函式中呼叫:

int _tmain(int argc, _tchar* argv)

6、執行結果:

鍊錶刪除指定位置節點 C語言

這裡有個小技巧,容易錯誤。傳入的是個雙重指標 st datanode phead,因為刪除在首節點的位置時候,煉表頭的位置會發生改變,指向新的節點,所以需要傳入雙重指標,以便接收修改的新的煉表頭的位置 實現 st datanode removelistnode st datanode phead,i...

單向鍊錶 三 在指定位置插入新的節點

1 要向鍊錶中插入新的資料,就要插入乙個新的節點,下面是一幅示意圖 2 說明 原始鍊錶為1 2 3 4 null,新增乙個資料 5 至第3個節點,只要使第2個節點指向新節點 值為5的節點 使新節點指向原來的第3個節點 值為3的節點 就行了。3 更通俗地講,就是在 2 與 3 之間的 紅色箭頭 上新增...

單向鍊錶刪除節點

單向鍊錶刪除節點的乙個技巧,這個是在 程式設計之美 上面看到的,可以用來對付一些演算法題。有時候會遇到這種情況,單鏈表提供乙個指標,要求要刪除指標指向的節點。如下 考慮到釋放記憶體,還再需要乙個指標 我們具體一下,有這麼乙個單向鍊錶,這個鍊錶的節點比較簡單,資料域只有乙個整型 並且當前的指標 ite...