給定鏈表中間節(jié)點(diǎn)指針,刪除中間節(jié)點(diǎn)的方法
更新時(shí)間:2013年11月14日 10:17:56 作者:
本文實(shí)現(xiàn)算法來(lái)刪除單鏈表中的中間節(jié)點(diǎn),只知道指向該節(jié)點(diǎn)中間節(jié)點(diǎn)的指針,大家可以參考使用
問(wèn)題如下
輸入:鏈表 a->b->c->d->e中指向節(jié)點(diǎn)c的指針
輸出:無(wú)返回值,但新鏈表變?yōu)閍->b->d->e
解答:
想了好久沒(méi)想出來(lái),看了提示才知道解法的。這里用到了一個(gè)小技巧。要?jiǎng)h除中間節(jié)點(diǎn),但是我們不知道要?jiǎng)h除節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)p,所以無(wú)法通過(guò)修改指針的方法(p->next=del->next)來(lái)刪除節(jié)點(diǎn),但知道要?jiǎng)h除節(jié)點(diǎn)的后一個(gè)節(jié)點(diǎn),那么我們換一個(gè)思路,把要?jiǎng)h除的節(jié)點(diǎn)的數(shù)據(jù)與該節(jié)點(diǎn)的后一個(gè)節(jié)點(diǎn)的數(shù)據(jù)交換,然后刪除后一個(gè)節(jié)點(diǎn),從而達(dá)到目的。但是該方法不能刪除最后一個(gè)節(jié)點(diǎn),原因顯而易見(jiàn)。
// a tricky solution,can't delete the last one element
int delete_node(NODE* node) {
int data;
NODE *p=node->next;
node->data=p->data;
node->next=p->next;
free(p);
}
輸入:鏈表 a->b->c->d->e中指向節(jié)點(diǎn)c的指針
輸出:無(wú)返回值,但新鏈表變?yōu)閍->b->d->e
解答:
想了好久沒(méi)想出來(lái),看了提示才知道解法的。這里用到了一個(gè)小技巧。要?jiǎng)h除中間節(jié)點(diǎn),但是我們不知道要?jiǎng)h除節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)p,所以無(wú)法通過(guò)修改指針的方法(p->next=del->next)來(lái)刪除節(jié)點(diǎn),但知道要?jiǎng)h除節(jié)點(diǎn)的后一個(gè)節(jié)點(diǎn),那么我們換一個(gè)思路,把要?jiǎng)h除的節(jié)點(diǎn)的數(shù)據(jù)與該節(jié)點(diǎn)的后一個(gè)節(jié)點(diǎn)的數(shù)據(jù)交換,然后刪除后一個(gè)節(jié)點(diǎn),從而達(dá)到目的。但是該方法不能刪除最后一個(gè)節(jié)點(diǎn),原因顯而易見(jiàn)。
復(fù)制代碼 代碼如下:
// a tricky solution,can't delete the last one element
int delete_node(NODE* node) {
int data;
NODE *p=node->next;
node->data=p->data;
node->next=p->next;
free(p);
}
相關(guān)文章
Shell腳本實(shí)現(xiàn)硬盤空間和表空間的使用情況統(tǒng)計(jì)并郵件通知
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)硬盤空間和表空間的使用情況統(tǒng)計(jì)并郵件通知,其中表空間是指oracle數(shù)據(jù)庫(kù)里的表空間,需要的朋友可以參考下2014-12-12
淺談Linux 二進(jìn)制包安裝MySQL的一些問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談Linux 二進(jìn)制包安裝MySQL的一些問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
如何使用 Shell 腳本執(zhí)行 .NET Core 應(yīng)用
這篇文章主要介紹了如何使用 Shell 腳本執(zhí)行 .NET Core 應(yīng)用,幫助大家更好的理解和使用shell 腳本,感興趣的朋友可以了解下2020-09-09
linux中文件的三種time(atime,mtime,ctime)的用法
linux下文件有3個(gè)時(shí)間的,分別是atime,mtime,ctime,有些小伙伴對(duì)這3個(gè)時(shí)間還是比較迷茫和困惑的,所以小編為大家整理了下,希望對(duì)大家有所幫助2023-08-08

