面試 考慮鍊錶反轉的遞迴實現

2021-07-31 16:37:26 字數 697 閱讀 6403

這道題是在面試時遇到的,要求實現鍊錶反轉的遞迴版,這道題其實思想非常的簡單,而且幾行**就可以實現,但是在面試時出現,這的確如果之前練習的是非遞迴版的鍊錶反轉實現,那麼來乙個遞迴版的,可能需要花點時間來適應一下。

以下實現了兩個版本的遞迴版單鏈表反轉,這道題從兩個角度看,區別在於,遞迴呼叫的返回值是什麼,如果遞迴呼叫的返回值是輸入結點,那麼直接在這一層函式連線當前結點,另乙個是在下一層呼叫中完成鍊錶的反轉。

// 結點的定義

struct node

};class solution

node* reverse_list(node* node1, node* node2)

node* lastnode = null;

class solution

reverse_list(node->next)->next = node;

node->next = null;

}node* reverse_list(node* node)

reverse_list(node->next)->next = node;

return node;}

int main()

tmp->next = null;

s.reverselist(node);

for (int i = 0; i < 3; i++)

return 0;

}

遞迴實現鍊錶的反轉

我對遞迴的理解一直不是非常透徹,這裡想要用遞迴實現鍊錶的反轉,寫的時候發現自己連鍊錶的定義都忘記了 還是 寫得太少了 include stdio.h include include iostream using namespace std struct node node creat int a r...

Golang遞迴實現鍊錶反轉

反轉前的鍊錶 a b c d e f g h i j k l m n o p q r s t u v w x y z 反轉後的鍊錶 z y x w v u t s r q p o n m l k j i h g f e d c b a package main import fmt type lis...

鍊錶的反轉 遞迴實現

此處明確了實現的方法,另外非遞迴 迭代 的方法也可行。首先我們需要知道一些基礎知識 即遞迴的相關概念。遞迴 recursion 即函式自己呼叫自己,若問題可以使用遞迴來解決,則必須滿足以下三個條件 1.可以要把解決的乙個問題轉化為乙個新的問題,這個新問題的解決思路與原來相同,只是在有規律的變化 例如...