出自《劍指offer》第16題。
題目:定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出翻轉後的鍊錶的頭結點。
鍊錶的結點定義:
struct listnode
return preversehead;
}遞迴法:
listnode *reverse(listnode *pprev,listnode *pnode)
listnode * reverselist_recursion(listnode *phead)
定義鍊錶的結構、初始化鍊錶、列印鍊錶中資料。
#includeusing namespace std;
struct listnode
;listnode * initiallist(int arr,int len)
p->m_pnext=null;
listnode *temp=head;
head=head->m_pnext;
delete temp;
return head;
}void printlist(listnode *head)
cout<
清空鍊錶:
void clearlist(listnode * &head)
}
測試程式:
int main()
; int len=sizeof(arr)/sizeof(arr[0]);
cout<
二 單鏈表的反轉 遞迴和迴圈方式實現
單鏈表的建立 列印和釋放見部落格 一 單鏈表的建立 列印和釋放 1.遞迴方式實現單鏈表的反轉 param plist node t 帶頭結點的單鏈表的第乙個有效結點 node t slistrecur node t pfirst node t pnewnode slistrecur pfirst p...
遞迴(鍊錶反轉)
將乙個單鏈表反轉,結果得到的是鍊錶的最後乙個,以及第乙個。確實是反轉了,但是只剩下兩個元素了。public static node reversenode node node node newheadnode reversenode node.getnext node.setnext null ne...
六種鍊錶反轉方式
鍊錶的反轉有很多種玩法,這裡主要介紹 文字原始碼 singlylinkedlistreverse 測試案例 listreversetest 主要原始碼 public int reverse array singlylinkedlist listlj nodelj node listlj.head.n...