使用單鏈表反轉的遞迴和非遞迴實現方式

2021-07-10 11:12:23 字數 893 閱讀 5940

//思路為將節點從前到後依次放到表頭,最後最後的節點到了最前面,最前面的節點到了最後面  

listnode * reverselist(listnode * head)

return head;

} //遞迴方式

listnode * reverselist2(listnode * head)

}

完整的**如下:

// 反轉鍊錶.cpp : 定義控制台應用程式的入口點。  

#include

"stdafx.h"

#include

using namespace std;

//定義乙個鍊錶節點

typedef struct listnode

listnode;

//插入乙個新節點到鍊錶中(放在鍊錶頭部)

void createlist(listnode *

& head,int data)

p->m_pnext=head;

head=p;

} void printlist(listnode* head)

cout<} //思路為將節點從前到後依次放到表頭,最後最後的節點到了最前面,最前面的節點到了最後面

listnode * reverselist(listnode * head)

return head;

} //遞迴方式

listnode * reverselist2(listnode * head)

} int _tmain(int argc, _tchar* argv[

])

單鏈表反轉(遞迴和非遞迴)

單鏈表反轉有遞迴和非遞迴兩種演算法。下面定義節點 cpp view plain copy typedef struct listnodelistnode 在遞迴演算法中的做法是 1找到最後乙個節點和倒數第二個節點,把最後乙個節點設為頭節點的後繼 2反轉這兩個節點 3倒數第三個和第四個節點重複執行步驟...

單鏈表反轉(遞迴和非遞迴)

單鏈表反轉有遞迴和非遞迴兩種演算法。下面定義節點 typedef struct listnodelistnode 在遞迴演算法中的做法是 1找到最後乙個節點和倒數第二個節點,把最後乙個節點設為頭節點的後繼 2反轉這兩個節點 3倒數第三個和第四個節點重複執行步驟2 其中注意,鍊錶是以節點後繼為null...

單鏈表反轉 非遞迴 遞迴方式實現

鍊錶的翻轉是程式設計師面試中出現頻度最高的問題之一,常見的解決方法分為遞迴和迭代兩種。最近在複習的時候,發現網上的資料都只告訴了怎麼做,但是根本沒有好好介紹兩種方法的實現過程與原理。所以我覺得有必要好好的整理一篇博文,來幫忙大家一步步理解其中的實現細節。我們知道迭代是從前往後依次處理,直到迴圈到鏈尾...