圖解逆序單向連結串列全過程
4個桶, 桶上都分別標著特定的標籤1, 2, 3, 4; 桶裡有對應的4個球,標著和桶一樣的編號;
問題來了, 讓所有桶和桶內球的編號之和都為5, 在交換的過程中,不能增加額外的桶, 且球不能著地,應該如何解決呢,最好的方式就是多找幾個人,手持球完成交換;
事實上, 在單向連結串列逆序的過程中: 我們也需要使用指標來代替人的作用
連結串列由多個結點組成, 每一個結點可被看做最小的單位.
要求在不開闢新記憶體空間的情況下,完成連結串列的逆序
# include <stdio.h>
// 定義連結串列結點
struct ListNode{
// 定義結點的值
int n_val;
// 定義結點指向下一個結點的指標的值
ListNode* p_next;
// 結構體預設構造方法
ListNode(int x): n_val(x), p_next(NULL) {};
};
// 定義逆序類
class Solution{
public:
// 傳入連結串列頭部結點的指標(直接用指標修改原陣列 的排列情況)
ListNode* reverseList(ListNode* head){
// 建立一個新的ListNode型別的指標, 用於最後的返回值(開闢第一個指標空間)
ListNode *new_head = NULL;
// 開始遍歷整個連結串列, 重排為新的連結串列
while(head){
// 建立臨時結點, 儲存 當前head結點 的指向(開闢第二個指標空間)
ListNode* tmp = head->p_next;
// 將當前結點指向到 new_head
head->p_next = new_head;
// 將new_head指向head當前的結點
new_head = head;
// 將head結點後移一個單位;
head = tmp;
}
return new_head;
}
};
int main(){
// 初始化值
ListNode a(10);
ListNode b(20);
ListNode c(30);
ListNode d(40);
a.p_next = &b;
b.p_next = &c;
c.p_next = &d;
d.p_next = NULL;
// 例項化方法
Solution solve;
// 獲取連結串列頭指標
ListNode *head = &a;
printf("轉置之前的連結串列為:\n");
while (head){
// 列印當前指標所在結點的值
printf("%d\n", head->n_val);
// 指標後移
head = head->p_next;
}
// 執行轉置
head = solve.reverseList(&a);
printf("轉置之後的連結串列為:\n");
while (head) {
printf("%d\n", head->n_val);
head = head->p_next;
}
return 0;
}
相關文章
- Java 單連結串列逆序Java
- 連結串列逆序
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 棧_單向連結串列
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- 單向迴圈連結串列
- 佇列_單向連結串列佇列
- 結構與演算法(03):單向連結串列和雙向連結串列演算法
- 連結串列-雙向連結串列
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- Python實現單向連結串列詳解Python
- go 實現單向連結串列Go
- C語言之單向連結串列C語言
- 單向連結串列介面設計
- 資料結構實驗之連結串列二:逆序建立連結串列資料結構
- 菜鳥圖解簡單連結串列(轉)圖解
- 單向迴圈連結串列大綱
- 畫江湖之資料結構【第一話:連結串列】單向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 單向連結串列資料結構
- Java單連結串列反轉圖文詳解Java
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 雙向連結串列
- 單向迴圈連結串列的介面程式
- 單向迴圈連結串列的實現
- 資料結構之連結串列與陣列(3):單向連結串列上的簡單操作資料結構陣列
- 連結串列-單連結串列實現
- javascript中的連結串列結構—雙向連結串列JavaScript
- 資料結構-棧(通過陣列和單向連結串列實現)資料結構陣列
- 【資料結構】遞迴實現連結串列逆序資料結構遞迴
- HTTPS連線建立過程(單向&雙向)HTTP
- 設計單向迴圈連結串列的介面
- 資料結構之連結串列與陣列(2):單向連結串列上的簡單操作問題資料結構陣列
- 【資料結構】連結串列(單連結串列實現+詳解+原碼)資料結構
- 資料結構之php實現單向連結串列資料結構PHP
- 012 通過連結串列學習Rust之持久化單連結串列Rust持久化
- 012 透過連結串列學習Rust之持久化單連結串列Rust持久化
- 實現雙向連結串列