Hello 算法 1.2.0 繁体中文 Ruby 版
演算法使用的相關空間 相關程式碼如下: ### 類別 ### class Node attr_accessor :val # 節點值 attr_accessor :next # 指向下一節點的引用 def initialize(x) @val = x end end ### 函式 ### def function # 執行某些操作... 0 end ### 演算法 ### 織方式”。例如以下程式 碼,我們用相同的資料結構(陣列)來儲存與表示不同的基本資料型別,包括 int、float、char、bool 等。 # Ruby 的串列可以自由儲存各種基本資料型別和物件引用 data = [0, 0.0, 'a', false, ListNode(0)] 3.3 數字編碼 * Tip 在本書中,標題帶有 * 符號的是選讀章節。如果你時間有限或感到理解困難,可以先跳過,等學完必 都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 圖 4‑5 鏈結串列定義與儲存方式 觀察圖 4‑5 ,鏈結串列的組成單位是節點(node)物件。每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被0 码力 | 372 页 | 18.75 MB | 9 月前3Hello 算法 1.2.0 繁体中文 Python 版
類別""" def __init__(self, x: int): self.val: int = x # 節點值 self.next: Node | None = None # 指向下一節點的引用 def function() -> int: """ 函式""" # 執行某些操作... return 0 def algorithm(n) -> int: # 輸入資料 A = 0 # 的字串 characters: list[str] = ['0'] * 5 bools: list[bool] = [False] * 5 # Python 的串列可以自由儲存各種基本資料型別和物件引用 data = [0, 0.0, 'a', False, ListNode(0)] 3.3 數字編碼 * Tip 在本書中,標題帶有 * 符號的是選讀章節。如果你時間有限或感到理解困難,可以先跳過,等學完必 大時,記憶體可能無法提供如此大的連 續空間。此時鏈結串列的靈活性優勢就體現出來了。 鏈結串列(linked list)是一種線性資料結構,其中的每個元素都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 第 4 章 陣列與鏈結串列 www.hello‑algo0 码力 | 364 页 | 18.74 MB | 9 月前3Hello 算法 1.2.0 繁体中文 C# 版
大時,記憶體可能無法提供如此大的連 續空間。此時鏈結串列的靈活性優勢就體現出來了。 鏈結串列(linked list)是一種線性資料結構,其中的每個元素都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 第 4 章 陣列與鏈結串列 www.hello‑algo.com 73 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被稱為“頭節點”,最後一個節點被稱為“尾節點”。 ‧ 尾節點指向的是“空”,它在 Java、C++ 和 Python 中分別被記為 null、nullptr 和 None 。 ‧ 在 C、C++、Go 和 Rust 等支持指標的語言中,上述“引用”應被替換為“指標”。 如以下程式碼所示,鏈結串列節點 ListNode ListNode 除了包含值,還需額外儲存一個引用(指標)。因此在相同資料 量下,鏈結串列比陣列佔用更多的記憶體空間。 /* 鏈結串列節點類別 */ class ListNode(int x) { //建構子 int val = x; // 節點值 ListNode? next; // 指向下一節點的引用 } 4.2.1 鏈結串列常用操作 1. 初始化鏈結串列 建立鏈結串列分為兩0 码力 | 379 页 | 18.79 MB | 9 月前3Hello 算法 1.2.0 繁体中文 Dart 版
都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 圖 4‑5 鏈結串列定義與儲存方式 觀察圖 4‑5 ,鏈結串列的組成單位是節點(node)物件。每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被 Rust 等支持指標的語言中,上述“引用”應被替換為“指標”。 如以下程式碼所示,鏈結串列節點 ListNode 除了包含值,還需額外儲存一個引用(指標)。因此在相同資料 量下,鏈結串列比陣列佔用更多的記憶體空間。 /* 鏈結串列節點類別 */ class ListNode { int val; // 節點值 ListNode? next; // 指向下一節點的引用 ListNode(this next]); // 建構子 } 4.2.1 鏈結串列常用操作 1. 初始化鏈結串列 建立鏈結串列分為兩步,第一步是初始化各個節點物件,第二步是構建節點之間的引用關係。初始化完成後, 我們就可以從鏈結串列的頭節點出發,透過引用指向 next 依次訪問所有節點。 第 4 章 陣列與鏈結串列 www.hello‑algo.com 74 // === File: linked_list.dart0 码力 | 378 页 | 18.77 MB | 9 月前3Hello 算法 1.2.0 繁体中文 TypeScript 版
constructor(val?: number) { this.val = val === undefined ? 0 : val; // 節點值 this.next = null; // 指向下一節點的引用 } } /* 函式 */ function constFunc(): number { // 執行某些操作 第 2 章 複雜度分析 www.hello‑algo.com 43 return 都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 圖 4‑5 鏈結串列定義與儲存方式 觀察圖 4‑5 ,鏈結串列的組成單位是節點(node)物件。每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被 和 Python 中分別被記為 null、nullptr 和 None 。 ‧ 在 C、C++、Go 和 Rust 等支持指標的語言中,上述“引用”應被替換為“指標”。 如以下程式碼所示,鏈結串列節點 ListNode 除了包含值,還需額外儲存一個引用(指標)。因此在相同資料 量下,鏈結串列比陣列佔用更多的記憶體空間。 /* 鏈結串列節點類別 */ class ListNode { val:0 码力 | 384 页 | 18.80 MB | 9 月前3Hello 算法 1.2.0 繁体中文 Kotlin 版
大時,記憶體可能無法提供如此大的連 續空間。此時鏈結串列的靈活性優勢就體現出來了。 鏈結串列(linked list)是一種線性資料結構,其中的每個元素都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 第 4 章 陣列與鏈結串列 www.hello‑algo.com 73 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被稱為“頭節點”,最後一個節點被稱為“尾節點”。 ‧ 尾節點指向的是“空”,它在 Java、C++ 和 Python 中分別被記為 null、nullptr 和 None 。 ‧ 在 C、C++、Go 和 Rust 等支持指標的語言中,上述“引用”應被替換為“指標”。 如以下程式碼所示,鏈結串列節點 ListNode ListNode 除了包含值,還需額外儲存一個引用(指標)。因此在相同資料 量下,鏈結串列比陣列佔用更多的記憶體空間。 /* 鏈結串列節點類別 */ // 建構子 class ListNode(x: Int) { val _val: Int = x // 節點值 val next: ListNode? = null // 指向下一個節點的引用 } 4.2.1 鏈結串列常用操作 1.0 码力 | 382 页 | 18.79 MB | 9 月前3Hello 算法 1.2.0 繁体中文 Java 版
大時,記憶體可能無法提供如此大的連 續空間。此時鏈結串列的靈活性優勢就體現出來了。 鏈結串列(linked list)是一種線性資料結構,其中的每個元素都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 第 4 章 陣列與鏈結串列 www.hello‑algo.com 73 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被稱為“頭節點”,最後一個節點被稱為“尾節點”。 ‧ 尾節點指向的是“空”,它在 Java、C++ 和 Python 中分別被記為 null、nullptr 和 None 。 ‧ 在 C、C++、Go 和 Rust 等支持指標的語言中,上述“引用”應被替換為“指標”。 如以下程式碼所示,鏈結串列節點 ListNode ListNode 除了包含值,還需額外儲存一個引用(指標)。因此在相同資料 量下,鏈結串列比陣列佔用更多的記憶體空間。 /* 鏈結串列節點類別 */ class ListNode { int val; // 節點值 ListNode next; // 指向下一節點的引用 ListNode(int x) { val = x; } // 建構子 } 4.2.1 鏈結串列常用操作 1.0 码力 | 379 页 | 18.79 MB | 9 月前3Hello 算法 1.2.0 繁体中文 Swift 版
都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 圖 4‑5 鏈結串列定義與儲存方式 觀察圖 4‑5 ,鏈結串列的組成單位是節點(node)物件。每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被 等支持指標的語言中,上述“引用”應被替換為“指標”。 如以下程式碼所示,鏈結串列節點 ListNode 除了包含值,還需額外儲存一個引用(指標)。因此在相同資料 量下,鏈結串列比陣列佔用更多的記憶體空間。 /* 鏈結串列節點類別 */ class ListNode { var val: Int // 節點值 var next: ListNode? // 指向下一節點的引用 init(x: Int) hello‑algo.com 74 4.2.1 鏈結串列常用操作 1. 初始化鏈結串列 建立鏈結串列分為兩步,第一步是初始化各個節點物件,第二步是構建節點之間的引用關係。初始化完成後, 我們就可以從鏈結串列的頭節點出發,透過引用指向 next 依次訪問所有節點。 // === File: linked_list.swift === /* 初始化鏈結串列 1 -> 3 -> 2 -> 5 ->0 码力 | 379 页 | 18.79 MB | 9 月前3Hello 算法 1.2.0 繁体中文 JavaScript 版
next; constructor(val) { this.val = val === undefined ? 0 : val; // 節點值 this.next = null; // 指向下一節點的引用 } } /* 函式 */ function constFunc() { // 執行某些操作 第 2 章 複雜度分析 www.hello‑algo.com 43 return 0; } 都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 圖 4‑5 鏈結串列定義與儲存方式 觀察圖 4‑5 ,鏈結串列的組成單位是節點(node)物件。每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被 和 Python 中分別被記為 null、nullptr 和 None 。 ‧ 在 C、C++、Go 和 Rust 等支持指標的語言中,上述“引用”應被替換為“指標”。 如以下程式碼所示,鏈結串列節點 ListNode 除了包含值,還需額外儲存一個引用(指標)。因此在相同資料 量下,鏈結串列比陣列佔用更多的記憶體空間。 /* 鏈結串列節點類別 */ class ListNode { constructor(val0 码力 | 379 页 | 18.78 MB | 9 月前3Hello 算法 1.2.0 繁体中文 Go 版
都是一個節點物件,各個節點透過“引用”相 連線。引用記錄了下一個節點的記憶體位址,透過它可以從當前節點訪問到下一個節點。 鏈結串列的設計使得各個節點可以分散儲存在記憶體各處,它們的記憶體位址無須連續。 圖 4‑5 鏈結串列定義與儲存方式 觀察圖 4‑5 ,鏈結串列的組成單位是節點(node)物件。每個節點都包含兩項資料:節點的“值”和指向下 一節點的“引用”。 ‧ 鏈結串列的首個節點被 Java、C++ 和 Python 中分別被記為 null、nullptr 和 None 。 ‧ 在 C、C++、Go 和 Rust 等支持指標的語言中,上述“引用”應被替換為“指標”。 如以下程式碼所示,鏈結串列節點 ListNode 除了包含值,還需額外儲存一個引用(指標)。因此在相同資料 量下,鏈結串列比陣列佔用更多的記憶體空間。 /* 鏈結串列節點結構體 */ type ListNode struct Next: nil, } } 4.2.1 鏈結串列常用操作 1. 初始化鏈結串列 建立鏈結串列分為兩步,第一步是初始化各個節點物件,第二步是構建節點之間的引用關係。初始化完成後, 我們就可以從鏈結串列的頭節點出發,透過引用指向 next 依次訪問所有節點。 // === File: linked_list.go === /* 初始化鏈結串列 1 -> 3 -> 2 -> 5 -> 40 码力 | 385 页 | 18.80 MB | 9 月前3
共 15 条
- 1
- 2