遍歷一次實現單鏈表順序反轉

2021-07-27 12:15:56 字數 478 閱讀 7627

近日在閱讀《程式設計之美》中看到,單鏈表在不告訴頭指標的情況下完成刪除指定節點的方法,演算法為將刪除節點的下乙個節點的資料copy到刪除節點中,再刪除刪除節點的下乙個節點,從而實現移花接木的效果,完成對要求刪除節點資料刪除的目的。**如下:

pcurrent->next = pnext->next;

pcurrent->data = pnext->data;

delete pnext;

擴張問題為編寫乙個函式,給定乙個鍊錶的頭指標,要求遍歷一次,將單鏈表中的順序反過來。

我編寫這個函式的實現,**如下:

node_t * inverse( node_t *phead )

pcurrent->next = plast;

return pcurrent;

}

通過總結,就是用節點指標變數儲存欲改變之前的節點指標,從而就可以實現各種功能了。

實現單鏈表反轉

實現單鏈表反轉主要思路 需要注意的是 鍊錶在使用結束後,需要釋放記憶體 如果是new的要delete,malloc的要free 具體 如下所示 包含遞迴和非遞迴兩種方法 pragma once ifndef list h define list h include using namespace s...

查詢單鏈表倒數第k個結點 遍歷一次實現

已知乙個帶表頭結點的單鏈表,結點結構為 typedef struct node lnode,linklist 在不改變鍊錶的前提下,設計乙個盡可能高效的演算法,查詢鍊錶中倒數第k個位置上的結點 k為正整數 若查詢成功,輸出改結點的data域的值。定義兩個指標p,q,初始時均指向頭結點,p沿鍊錶開始向...

反轉乙個單鏈表

思路二 反轉乙個鍊錶 示例 結構體定義 先對原鍊錶做頭刪操作,再對新鍊錶做頭插定義乙個新head頭指標,標記為newhead,將它初始為null,並非指向null,最後我們選擇返回這個newhead指標作為新鍊錶的頭指標。定義乙個結點node作為 臨時中轉站 初始化與否並無大影響。進行迴圈遍歷鍊錶各...