資料結構基礎知識梳理

2021-09-26 14:58:41 字數 1316 閱讀 5891

資料結構實際上可以理解為資料在計算機中的儲存和使用結構。如果借助c++容器的概念,資料結構可以認為是以某種特定的布局方式儲存資料的容器。

這種「布局方式」決定了資料結構對於某些操作是高效的,而對於其他操作則是低效的。首先我們需要理解各種資料結構,才能在處理實際問題時選取最合適的資料結構。不同的資料結構適用於不同的應用場景。

目前通用的計算機專業教材將《資料結構》列為專業必修課,資料結構的主要研究內容是:

陣列是任何程式語言都會談及的資料結構,是最簡單的資料結構。

資料整體我們可以分為單個變數的資料儲存方式和大量資料的資料儲存方式。單個資料的變數儲存方式一般就是由變數型別而決定,比如int佔4位元組,char佔1位元組等等。大量資料的儲存方式主要就是資料結構了,是一種特定的資料儲存方式。

陣列是最簡單、也是使用最廣泛的資料結構。棧、佇列等其他資料結構均由陣列演變而來。

每個資料元素都關聯乙個正數值,我們稱之為索引,它表明陣列中每個元素所在的位置。大部分語言將初始索引定義為零。

棧的特點是last in first out,與佇列正好可以對照學習。棧和佇列都是順序儲存元素的線性資料結構。也就是學會棧,佇列也就學會了。

棧的特點是first in first out,與棧正好可以對照學習。棧和佇列都是順序儲存元素的線性資料結構。也就是學會佇列,棧也就學會了。

鍊錶也是重要的線性資料結構,鍊錶就像乙個節點鏈,其中每個節點包含著資料和指向後續節點的指標。 鍊錶還包含乙個頭指標,它指向鍊錶的第乙個元素,但當列表為空時,它指向null或無具體內容。

鍊錶一般用於實現檔案系統、雜湊表和鄰接表。

樹形結構是一種層級式的資料結構。樹類似於圖,但區分樹和圖的重要特徵是樹中不存在環路。

圖是一組以網路形式相互連線的節點。節點也稱為頂點。 一對節點(x,y)稱為邊(edge),表示頂點x連線到頂點y。邊可以包含權重/成本,顯示從頂點x到y所需的成本。

圖的型別

在程式語言中,圖可以用兩種形式表示:

常見圖遍歷演算法

字典樹,也被稱為「字首樹」,是一種特殊的樹狀資料結構,對於解決字串相關問題非常有效。它能夠提供快速檢索,主要用於搜尋字典中的單詞,在搜尋引擎中自動提供建議,甚至被用於ip的路由。

雜湊表是乙個用於唯一標識物件並將每個物件儲存在一些預先計算的唯一索引中的過程。因此,物件都是以鍵值對的形式儲存的,這些鍵值對的集合被稱為字典。可以使用鍵類搜尋物件,基於雜湊有很多不同的資料結構,但最常用的還是雜湊表。

雜湊表通常用陣列實現。

雜湊資料結構的效能取決於下面的因素:

資料結構基礎知識

時間複雜度和空間複雜度 同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測...

資料結構基礎知識

一種資料的邏輯結根據需要可以表示成多種儲存結構,常用的儲存結構有順序儲存 鏈結儲存 索引儲存等,採用不同的資料結構,其資料處理的效率是不同的。線性表是一種常用的資料結構。在實際應用中,線性表都是以棧 佇列 字串 陣列等特殊線性表的形式來使用的。線性表是一種線性結構。線性表有順序儲存結構和鏈式儲存結構...

資料結構基礎知識

簡單的說,資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係和操作等的學科。描述一類非數值計算問題的數學模型不再是數學方程,而是諸如表 樹和圖之類的資料結構。資料結構 的研究不僅涉及到計算機硬體 特別是編碼理論 儲存裝置和訪問方法等 的研究範圍,而且和計算機軟體的研究有著...