資料結構這一塊內容主要有陣列、陣列佇列、鍊錶、樹(二叉樹、哈弗曼二叉樹)。
1、(概括地說)陣列佇列和鍊錶都是可以用來實現儲存多組資料並隨意插入刪除的資料結構。而樹是一種更加靈活的資料結構,更加像是特殊的鍊錶。
2、陣列佇列就是通過佇列的方式將長度固定的陣列賦予插入刪除資料的功能,具體通過新定義陣列替換的方法實現。
3、鍊錶則是相對陌生的一種資料結構,需要引入「節點」的概念,每乙個節點都會分為兩部分,一部分是資料域,一部分是引用域。資料域是用來儲存這個節點所代表的資料的,一般來說是object類下任意型別的物件都可以。而引用域下則是規定了這個節點與其他之間的節點。在單向鍊錶中,僅僅需要規定本節點與下乙個節點的連線關係,很簡單。而在複雜的二叉樹甚至是更廣泛的樹中,這個引用域就顯得很重要,比如二叉樹,每乙個父節點要指向兩個子節點,且在哈弗曼二叉樹中,子節點要根據資料的權重分左子節點和右子節點。
4、總結鍊錶的時候,樹其實和我們小學學統計數學所用的樹狀圖有些相似。功能上都是用來存放資料,且上一級的節點裡的資料與這一級的節點之間存在某種意義上的「包含」關係。而哈弗曼二叉樹又是一種非常特殊的樹,要求權重之和最小,也就是每次都要權重最小的兩個先組成父節點。
5、在鍊錶或者陣列中,簡單的加入或者刪除方法並不難完成,而當需要用陣列佇列或者鍊錶儲存大批量資料時,遍歷整個陣列的方法對軟體效能的影響就至關重要。畢竟,如果插入或者刪除乙個資料需要遍歷大半個鍊錶,那麼執行效率將會非常低。因此簡單的改進方法是,將鍊錶設定為雙向鍊錶。這樣,在遍歷鍊錶時,就可以通過判斷指定位置與長度的一半的大小來判斷從頭開始還是從後往前遍歷鍊錶。
別人總結的學習資料結構的經驗
最近想了一下,沒有講詳細一點的學習方法。從第26,作第一次更新。學習方法 我認為任何資料結構都可以從線性表演進而來。以順序表為例,最簡單的順序表是無序的,那麼增加乙個要求,使其是有序的,那麼只需要改動一下插入操作。依理類推,堆疊和佇列,只需要改動插入和刪除操作,即可。你看科研 或實際專案,也是有乙個...
資料結構 資料結構緒論
資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...
資料結構 資料結構演算法
分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...