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