數據結構
編輯在計算機科學和軟件工程中,數據結構是用于存儲和組織數據的對象。 它是一種結構,因為數據以特定方式排列和鏈接,以實現高效訪問和管理。
數據結構的特征不僅在于它們包含的數據,而且最重要的是通過對這些數據的操作來啟用和實施訪問和管理。
數據結構解釋
編輯數據結構 en 的確定(定義)一般基于對數據存儲和必要操作的準確描述(規范)。 這個具體規范定義了操作的一般行為,因此從數據結構的具體實現中抽象出來。
如果考慮的重點不轉移到操作的具體實現上,術語數據結構通常被稱為抽象數據類型。從數據結構到抽象數據類型的轉換沒有明確定義,而僅取決于觀點看法。 鑒于許多數據結構的內存需求經常變化,動態數據類型也被提及,它們在技術上基于動態內存管理。
大多數數據結構除了其基本形式外,還具有許多專門用于完成特定任務的專業化。 例如,B 樹作為數據結構樹的一種特化,特別適用于數據庫實現。
對于許多算法,資源需求,即所需的運行時間和內存需求,取決于使用合適的數據結構。
基本數據結構
編輯以下數據結構通常是為經典命令式編程開發和優化的。 其他編程范例(例如函數式編程)可能需要不同的數據結構。
記錄
記錄(也稱為“元組”或英文記錄)是最簡單的數據結構en。 它們通常包含以明確定義的數字和順序包含其他值的值。 記錄通常由它們包含的一個或多個元素標識,通常稱為數據字段。
(數據)字段(也是數組)
字段(也稱為數組)是最簡單的數據結構。 這里保存了幾個相同基本數據類型的變量。 可以通過索引訪問各個元素。 從技術上講,這是將值添加到內存中數組的起始地址以獲得對象的地址。 xxx需要的操作是索引存儲和索引讀取,它們可以直接訪問數組的每個元素。 在一維的情況下,數組通常稱為向量,在二維的情況下,稱為表或矩陣。 數組決不限于二維,而是可以用于任意數量的維度。 由于它們的簡單性和基本重要性,大多數編程語言都提供了這種數據結構的具體實現,作為基本語言范圍內的復合數據類型數組。
映射表
賦值表(也稱為關聯數組或鍵值對)是一種特殊情況,其中存儲的數據不是通過數字索引訪問,而是通過鍵訪問。 實現關聯數組的一種可能方法是哈希表。
數量
另一個特殊情況是數量。 這里不能通過索引或鍵來訪問具體的值。 她精神錯亂。 它對應于一個映射表,其中的鍵只能出現一次,但沒有值。
(鏈接)列表
(鏈接)列表是一個數據結構,用于動態存儲任意數量的對象。 作為一項特殊功能,鏈表的每個列表元素都包含對下一個元素的引用,因此對象的整體成為對象的串聯。 與列表相關的操作相對不明確。 它們經常用于更復雜的數據結構en,而不是使用操作,它們的元素通常出于效率原因直接訪問。 程序庫中提供的列表在其底層數據結構中通常要復雜得多,并且通常根本不代表真實的列表,而是向外界展示它們自己。 列表總是線性結構。 如果前驅和后繼雙向鏈接,則稱為雙向鏈表。
隊列
隊列中可以存儲任意數量的對象,但存儲的對象只能是相同的順序在他們得救時再次閱讀。 這符合 FIFO 原則,對于隊列的定義和規格,其中存儲了哪些對象是無關緊要的。 至少操作屬于隊列
- 入隊以入隊并
- 出列以再次讀取xxx個保存的對象并將其從隊列中移除。
隊列通常實現為鏈表,但內部可以使用數組; 在這種情況下,元素的數量是有限的。
堆棧
一個棧中可以存儲任意數量的對象,但是存儲的對象只能倒序讀取。 這符合后進先出原則。 對于堆棧內存的定義和規格,其中存儲了哪些對象是無關緊要的。 至少操作屬于一個棧
- push 將一個對象壓入棧中
- pop 重新讀取并彈出最后保存的對象。
- (top 或 peek 閱讀頂部元素而不刪除它)
top 操作不是強制性的,但通常用于替換 pop/push,因為“測試”top 元素通常很有趣。 堆棧通常實現為列表,但也可以是向量。
雙端隊列
deque(雙端隊列)是一種類似于隊列或棧的數據結構。 它結合了數據結構的兩個屬性。 不同之處在于可以在任一端讀取、插入或刪除數據。
優先隊列
隊列的一個特化是優先級隊列,也稱為優先級隊列。 稱為優先隊列。 這背離了先進先出原則。 執行入隊操作(在本例中也稱為插入操作)根據每個對象攜帶的給定優先級將對象排序到優先級隊列中。 出隊操作總是返回具有最高優先級的對象。 優先級隊列主要是用堆來實現的。
圖
作為數據結構的圖形可以克服鏈接的單向性。 這里的操作也是插入、刪除和查找一個對象。 計算機中最著名的圖形表示是鄰接矩陣、關聯矩陣和鄰接表。 可以使用半邊數據結構映射平面圖。
樹
樹是圖論中圖的特殊形式。 通常只有外樹被用作數據結構。 從根開始,可以將多個相同類型的對象鏈接在一起,從而打破列表的線性結構并發生分支。 由于樹是計算機科學中最常用的數據結構之一,因此有很多專業化。
例如,在二叉樹中,孩子的數量最多為兩個,而在高度平衡樹中,每個節點的左右子樹的高度相差不大。
有序樹,尤其是搜索樹,將樹結構中的元素有序存儲,以便快速找到樹中的元素。 這里進一步區分了具有作為平衡版本的 AVL 樹(包括斐波那契樹)的二叉搜索樹和 B 樹及其變體 B* 樹。 B 樹的特化又是 2-3-4 樹,通常實現為紅黑樹。
沒有排序,但“嵌套”的是幾何樹結構,如 R 樹及其變體。 這里,只搜索那些與請求區域重疊的子樹。
盡管樹的結構是多維的,但它們在對象的串聯中通常是單向的。 存儲對象的鏈接從樹的根開始,然后從那里到樹的節點。
堆
堆(也稱堆或堆)結合了樹的數據結構和優先級隊列的操作。 除了 insert、remove 和 extractMin 等最低限度必要的操作外,堆通常還有其他操作,例如 merge 或 changeKey。 根據優先隊列中的優先順序使用最小堆或xxx堆。 堆的進一步特化是二叉堆、二項式堆和斐波那契堆。 堆大多建在樹上。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/361048/