比如說乙個鍊錶先是這樣, 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個人思路 回文鍊錶即字元左右對稱,但是鍊錶是單向的,這時我們就要讓鍊錶後半部分進行翻轉,首先遍歷鍊錶獲得長度,然後讓快指標走到鍊錶的後半部分開頭,然後開始進行後半部分的鍊錶翻轉,翻轉結束後快指標走到鍊錶的結尾,這時讓...