鍊錶的建立 輸出 非遞迴反轉 遞迴反轉

2021-09-30 10:32:48 字數 1066 閱讀 1731

鍊錶的建立、輸出、非遞迴反轉、遞迴反轉

**如下:

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; 

const int max = 0x7fffffff;

const int min = 0x80000000;

typedef struct node

node;

//功能:建立鍊錶

//輸入:頭結點

//返回值:-1代表建立失敗,1代表建立成功

int createlist(node** head)

else

count++;

} return 1;

}//功能:列印鍊錶

//輸入:煉表頭結點

//返回值: -1代表鍊錶為空,1代表列印成功

int printlist(node* head)

cout << endl;

return 1;

}//非遞迴反轉鍊錶

//輸入:二級指標的頭結點

//返回值:-1表示鍊錶為空,1代表反轉成功

//引數中的頭結點為二級指標,函式完成之後,head指向反轉後的結點

int reverselistnotrecursion(node** head)

return 1;

}//遞迴反轉鍊錶

//輸入:頭結點,待反轉結點

//返回值:當前反轉的結點,已插入尾部

//返回為引數中的引用,即反轉後的頭結點

node* reverselistrecursion(node** head, node* p)

remain = reverselistrecursion(head, p->next);

remain->next = p;

p->next = null;

return p;

}int main()

python實現鍊錶的反轉遞迴 用遞迴法反轉單鏈表

鍊錶是一種遞迴結構,因此將其與函式式一起使用將產生最佳結果。在您的程式中,您已經使用過程樣式和mutable節點實現了乙個鏈結列表,您將隨著時間的推移更改data和 的值。雖然這可能感覺像是一種直觀的方法,但我想重點關注一種不可變的規則,它將我們從嚴重的狀態複雜性中解放出來。在 首先,我們修復了no...

鍊錶的反轉 遞迴實現

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

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

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