資料結構學習總結

2021-10-22 17:12:01 字數 2957 閱讀 7898

經過一學期的學習,我對資料結構有了我自己的認識。一開始,我以為它和c語言和c++一樣,都是講一門語言。但學習之後,發現事實並不是這樣,在資料結構的學習中,有線性表,有隊,有棧,有樹,有圖等等。

這些看起來沒有關係,其實之間有著千絲萬縷的聯絡。線性表是其中最簡單的,所以在前幾章學習,後面依次逐章變難,學起來也很吃力。

《資料結構與演算法》以基本資料結構和演算法設計策略為知識單元,系統地介紹了資料結構的知識與應用、計算機演算法的設計與分析方法,主要內容包括線性表、樹、圖和廣義表、演算法設計策略以及查詢與排序演算法等。

線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。

因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。線性表具有如下的結構特點:均勻性:

雖然不同資料表的資料元素可以是各種各樣的,但對於同一線性表的各資料元素必定具有相同的資料型別和長度。有序性:各資料元素**性表中的位置只取決於它們的序號,資料元素之前的相對位置是線性的,即存在唯一的「第乙個「和「最後乙個」的資料元素,除了第乙個和最後乙個外,其它元素前面均只有乙個資料元素直接前驅和後面均只有乙個資料元素(直接後繼)。

在實現線性表資料元素的儲存方面,一般可用順序儲存結構和鏈式儲存結構兩種方法。鏈式儲存結構將在本**線性鍊錶中介紹,本章主要介紹用陣列實現線性表資料元素的順序儲存及其應用。另外棧、佇列和串也是線性表的特殊情況,又稱為受限的線性結構。

鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:

乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點。位址的指標域。相比於線性表順序結構,鍊錶比較方便插入和刪除操作。

單鏈表—用一組位址任意的儲存單元存放線性表中的資料元素。迴圈鍊錶—迴圈鍊錶是另一種形式的鏈式存貯結構。它的特點是表中最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。

在學習資料結構之前,我就已經接觸過棧了,當時學習c語言,就用到過,但不是很全面。棧作為一種資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。

棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。

插入一般稱為進棧(push),刪除則稱為退棧(pop)。棧也稱為後進先出表。

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端進行刪除操作,而在表的後端進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。

在佇列這種資料結構中,最先插入的元素將是最先被刪除的元素;反之最後插入的元素將是最後被刪除的元素,因此佇列又稱為「先進先出」的線性表。為充分利用向量空間,克服"假溢位"現象的方法是:將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。

儲存在其中的佇列稱為迴圈佇列。

在電腦科學中,樹是一種重要的非線性資料結構,直觀地看,它是資料元素(在樹中稱為結點)按分支關係組織起來的結構。二叉樹是每個節點最多有兩個子樹的有序樹。通常子樹被稱作「左子樹」和「右子樹」。

二叉樹常被用於實現二叉查詢樹和二叉堆。值得注意的是,二叉樹不是樹的特殊情形。在圖論中,二叉樹是乙個連通的無環圖,並且每乙個頂點的度不大於3。

有根二叉樹還要滿足根結點的度不大於2。有了根結點後,每個頂點定義了唯一的根結點,和最多2個子結點。然而,沒有足夠的資訊來區分左結點和右結點。

在學習樹的過程中,我印象最深的就是兒茶排序樹了。二叉排序樹又稱二叉查詢樹,亦稱二叉搜尋樹。 它或者是一棵空樹;或者是具有下列性質的二叉樹:

若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 左、右子樹也分別為二叉排序樹。

資料結構中的圖是一種比線性表、樹更為複雜的資料結構。**性表中,資料元素之間呈線性關係,即每個元素只有乙個直接前驅和乙個直接後繼。在樹型結構中,資料元素之間有明顯的的層次關係,即每個結點只有乙個直接前驅,但可有多個直接後繼,而在圖結構中,每個結點即可有多個直接前驅,也可有多個直接後繼,因此,樹結構是圖結構的一種特殊情形。

當乙個樹結構中允許同一結點出現在不同分支上時,該樹結構實際上就是乙個圖結構。圖分有向圖和無向圖。圖的儲存結構的知識點有:

鄰接矩陣、鄰接表、逆鄰接表、十字鍊錶和鄰接多重表。圖的遍歷包括圖的深度優先搜尋遍歷和廣度優先搜尋遍歷。其餘知識點有:

有向圖、連通圖、生成樹和森林、最短路徑問題和有向無環圖及其應用。有向無環圖重點理解aov網和拓撲排序及其演算法。圖的遍歷:

深度優先遍歷的思想類似於樹的先序遍歷。其遍歷過程可以描述為從圖中某個頂點v出發,訪問該頂點,然後依次從v的未被訪問的鄰接點出發繼續深度優先遍歷圖中的其餘頂點,直至圖中所有與v有路徑相通的頂點都被訪問完為止。對圖的廣度優先遍歷方法描述為:

從圖中某個頂點v出發,在訪問該頂點v之後,依次訪問v的所有未被訪問過的鄰接點,然後再訪問每個鄰接點的鄰接點,且訪問順序應保持先被訪問的頂點其鄰接點也優先被訪問,直到圖中的所有頂點都被訪問為止。下面是對乙個無向圖進行廣度優先遍歷的過程。

學習資料結構不同於c語言和c++,資料結構的內容很多,概括的方面也很廣,想要學好不是一件簡單的事。我還記得我在實驗課的前乙個晚上,就為了乙個樹的**,想了幾個小時!我不知道時間是怎麼過去的,但我感覺頗豐!

學習資料結構,我個人覺得這是最重要的,當你有那種自己寫的程式按自己的想法編譯出來後,心情是特別愉悅的,這就是我們學習的動力!學資料結構,看不如做,寫在紙上不如寫在電腦上。我不贊成題海戰術,但相關的題量是必須要有的,只有在不斷的寫程式中,不斷的發現自己的不足,不斷地收貨新的知識,不斷的鍛鍊自己程式設計的能力。

還有就是學習資料結構是要花時間的,要下功夫,少一點玩遊戲時間,多一點程式設計時間,總對我們是好的。

資料結構學習總結

通過一學期對 資料結構與演算法 的學習,大概的了解了基本的資料結構和相應的一些演算法。下面總結一下自己乙個學期學習的收穫和心得。資料結構是什麼 資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效...

資料結構學習方法

學習方法二先邏輯結構後儲存結構的學習方法 資料結構的一項重要任務就是把實際應用中的實際問題抽象成數學模型 邏輯結構 然後再根據不同計算機語言的特點,安排儲存結構,為進一步的操作和計算服務,我們在學習資料結構時,如果遵循這個原則來學習。不但可以加強我們的記憶,而且可以加深我們對所學知識的理解,同時也能...

資料結構學習試題及答案

3 1 線性鍊錶 單鏈表 每個資料元素有兩部分 乙個資料域 儲存資料元素資訊 乙個指標域 後繼儲存位置 最都乙個元素的指標為空 3.2 迴圈鍊錶最後乙個結點的指標域指向頭結點 3.3雙向鍊錶每個結點有兩個指標域,乙個指向前域,乙個是後域 4 靜態鍊錶 用陣列描述鍊錶。指標指向下乙個元素位址 第三章棧...