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...