--指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關係是指資料元素之間的前後間的關係,而與他們在計算機中的儲存位置無關。邏輯結構包括:
--指資料的邏輯結構在計算機中儲存空間的存放形式。
資料的邏輯結構在計算機儲存空間中的存放形式稱為資料的物理結構(也稱儲存結構)。一般來說,一種資料結構的邏輯結構根據需要可以表示成多種儲存結構,常用的儲存結構有順序儲存丶鏈式儲存丶索引儲存和雜湊儲存等。
--資料結構有很多種,一般來說,按照資料結構的邏輯結構對其進行簡單的分類,包括線性結構和非線性結構兩類。
線性結構是非空集。
線性結構有且只有乙個開始結點和乙個終端結點。
線性結構所有結點都最多只有乙個直接前驅結點和乙個直接後繼結點。
線性表就是典型的線性結構,當然還有棧丶佇列和串等都屬於線性結構。
非線性結構是非空集合。
非線性結構是乙個結點可能有多個直接前驅結點和多個直接後繼結點。
~~在實際開發應用中,資料丶廣義表丶樹結構和圖結構等資料結構都屬於非線性結構
--在電腦科學不斷地發展過程中,資料結構也在隨之不斷發展。在日常程式設計中常用的資料結構包括如下幾個。
陣列(array):陣列是一種聚合資料型別,它是將具有相同型別的若干變數有序地組織在一起的集合。陣列可以說是最基本的資料結構,在各種程式語言中都有對應。乙個陣列可以分解為多個陣列元素,按照陣列元素的型別,陣列可以分為整型陣列丶字元型陣列丶浮點型陣列丶指標陣列和結構陣列等。陣列還可以有一維陣列丶二維陣列以及多維陣列等表現形式。
棧(stack):棧是一種特殊的線性表,它只能在乙個表的乙個固定端進行資料的插入和刪除操作。棧按照後進先出的原則來儲存資料,也就是說,先插入的資料被壓入棧底,最後插入的資料在棧頂,讀出資料時,從棧頂開始逐個讀出。棧在組合語言程式中,經常用於重要資料的現場保護。棧中沒用資料時,稱為空棧。
鍊錶(linked list):鍊錶是一種資料元素按照鏈式儲存結構進行儲存的資料結構,這種儲存結構具有在物理上存在非連續的特點。鍊錶由一系列資料結點構成,每個資料結點包括資料域和指標域兩部分。其中,指標域儲存了資料結構中下乙個元素存放的位址。鍊錶結構中資料元素的邏輯順序是通過鍊錶中的指標鏈結次序來實現的。
佇列(queue):佇列和棧類似,也是一種特殊的線性表。和棧不同的是,佇列只允許在表的一端進行插入操作,而在另一端進行刪除操作。一般來說,進行插入操作的一端稱為隊尾,進行刪除操作的一端稱為隊頭。佇列中沒有元素時,稱為空佇列。
樹(tree):樹是典型的非線性結構,它是包括,2個結點的有窮集合k。在樹結構中,有且僅有乙個根結點,該結點沒有前驅結點。在樹結構中的其他結點都有且僅有乙個前驅結點,而且可以有兩個後繼結點,m>=0。
圖(graph):圖是另一種非線性資料結構。在圖結構中,資料結點一般稱為頂點,而邊是頂點的有序偶對。如果兩個頂點之間存在一條邊,那麼就表示這兩個頂點具有相鄰關係。
堆(heap):堆是一種特殊的樹形資料結構,一般討論的堆都是二叉堆。堆的特點是根結點的值是所有結點中最小的或者最大的,並且根節點的兩個子樹也是乙個堆結構。
雜湊表(hash):雜湊表來自於雜湊函式(hash function),其思想是如果在結構中存在關鍵字和t相等的記錄,那麼必定在f(t)的儲存位置可以找到該記錄,這樣就可以不用進行比較操作而直接取得所查記錄了。
--資料結構研究的內容:就是如何按一定的邏輯結構,把資料組織起來,並選擇適當的儲存表示方法把邏輯結構組織好的資料儲存到計算機的儲存器裡。演算法研究的目的是為了更有效的處理資料,提高資料運算效率。資料的運算是定義在資料的邏輯結構上,但運算的具體實現要在儲存結構上進行。一般有以下幾種常用運算:
(1)檢索。檢索就是在資料結構裡查詢滿足一定條件的節點。一般是給定乙個某字段的值,找具有該字段值的節點。
(2)插入。往資料結構中增加新的節點。
(3)刪除。把指定的結點從資料結構中去掉。
(4)更新。改變指定節點的乙個或多個欄位的值。
(5)排序。把節點按某種指定的順序重新排列。例如遞增或遞減。
資料結構的種類
陣列 結構其實就是一排緊密相鄰的可數記憶體,並提供乙個直接訪問單一資料內容的計算方法。通常陣列的使用可以分為一維陣列 二維陣列與多維陣列等,其基本的工作原理都相同,以python為例。score 0 5score陣列 索引score 0 0score 1 1score 2 2score 3 3sco...
常用資料結構
文章參考 資料結構 c語言版 嚴蔚敏 線性表 有頭有尾,中間節點有前驅有後繼 定義 一組連續的儲存單元依次儲存線性表的資料元素。定長順序表 typedef struct sqlist psqlist 不定長順序表 typedef struct dsqlist dsqlist,pdsqlist 單鏈表...
常用資料結構
function delete array element arr,pos for i pos 1 i length 1 i array pop arr return arr pos 3 echo 除第位置上的元素後 echo implode delete array element arr,pos...