經典演算法 鍊錶翻轉

2021-07-15 03:04:34 字數 835 閱讀 3551

比如說乙個鍊錶先是這樣, 40 5 0 60 反過來就應該是 60 0 5 40

函式如下:

static

void reverse(struct node** head_ref)

*head_ref = prev; //代表著最後乙個

}

傳進去的引數是煉表頭

原理就是把鍊錶都反過來指,最後乙個指向倒數第二個,方法是通過上述的三個資料結構完成的,next是為了遍歷鍊錶,而current和prev是為了表明指向的地點

注意的是:while迴圈裡面第二三句絕對不能換

給出完整的程式:

#include 

#include

#include

using

namespace

std;

struct node;

void push(struct node** head_ref,int new_data)

static

void reverse(struct node** head_ref)

*head_ref = prev; //代表著最後乙個

}void printlist(struct node *head)

}int main()

void find(struct node *head,int data)

temp = temp->next;

}cout<<"沒有找到"

return count;

}

初級演算法 翻轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?思路1 迭代 思路很簡單 使用三個指標 迴圈使後乙個指向前乙個 再用第三個指標儲存沒有翻轉的剩餘指標的位置 自己敲得程式執行不出結果 class...

翻轉鍊錶演算法和實現

2 實現 3 執行結果 寫個翻轉鍊錶演算法,剛開始想到乙個不錯的思路。這個思路執行效率不低,時間複雜度為o n 可以不用分配額外的節點空間,空間複雜度為o 0 現在把思路整理一下,並實現 測試執行結果。用乙個while順序遍歷這個鍊錶,然後把遍歷到每個節點插入到鍊錶頭部。藍色箭頭即賦值符號,比如在第...

演算法練習 回文鍊錶 快慢指標 鍊錶翻轉

題目 編寫乙個函式,檢查輸入的鍊錶是否是回文的。示例 輸入 1 2 輸出 false個人思路 回文鍊錶即字元左右對稱,但是鍊錶是單向的,這時我們就要讓鍊錶後半部分進行翻轉,首先遍歷鍊錶獲得長度,然後讓快指標走到鍊錶的後半部分開頭,然後開始進行後半部分的鍊錶翻轉,翻轉結束後快指標走到鍊錶的結尾,這時讓...