資料結構是計算機儲存、組織資料的方式。好的資料結構可以帶來更高的執行或者儲存效率,資料結構往往同檢索演算法和索引技術有關。
乙個資料結構的設計過程分成抽象層、資料結構層和實現層。其中,抽象層是指抽象資料型別層,它討論資料的邏輯結構及其運算,資料結構層和實現層討論乙個資料結構的表示和在計算機內的儲存細節以及運算的實現。
乙個資料結構是由資料元素依據某種邏輯聯絡組織起來的。對資料元素間邏輯關係的描述稱為資料的邏輯結構;資料必須在計算機內儲存,資料的儲存結構是資料結構的實現形式,是其在計算機內的表示;此外討論乙個資料結構必須同時討論在該類資料上執行的運算才有意義。
資料結構是指同一資料元素類中各資料元素之間存在的關係。資料結構分別為邏輯結構、儲存結構(物理結構)和資料的運算。資料的邏輯結構是對資料之間關係的描述,有時就把邏輯結構簡稱為資料結構。邏輯結構形式地定義為(k,r)(或(d,s)),其中,k是資料元素的有限集,r是k上的關係的有限集。
資料元素相互之間的關係稱為結構。有四類基本結構:集合、線性結構、樹形結構、圖狀結構(網狀結構)。樹形結構和圖形結構全稱為非線性結構。集合結構中的資料元素除了同屬於一種型別外,別無其它關係。線性結構中元素之間存在一對一關係,樹形結構中元素之間存在一對多關係,圖形結構中元素之間存在多對多關係。在圖形結構中每個結點的前驅結點數和後續結點數可以任意多個。
資料結構在計算機中的表示(映像)稱為資料的物理(儲存)結構。它包括資料元素的表示和關係的表示。資料元素之間的關係有兩種不同的表示方法:順序映象和非順序映象,並由此得到兩種不同的儲存結構:順序儲存結構和鏈式儲存結構。
順序儲存方法:它是把邏輯上相鄰的結點儲存在物理位置相鄰的儲存單元裡,結點間的邏輯關係由儲存單元的鄰接關係來體現,由此得到的儲存表示稱為順序儲存結構。順序儲存結構是一種最基本的儲存表示方法,通常借助於程式語言中的陣列來實現。
鏈結儲存方法:它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關係是由附加的指標字段表示的。由此得到的儲存表示稱為鏈式儲存結構,鏈式儲存結構通常借助於程式語言中的指標型別來實現。
不同的資料結構其操作集不同,但下列操作必不可缺:
1,結構的生成;
2.結構的銷毀;
3,在結構中查詢滿足規定條件的資料元素;
4,在結構中插入新的資料元素;
5,刪除結構中已經存在的資料元素;
6,遍歷
常用資料結構在程式設計中,為了處理方便, 把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中, 陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列、字元陣列、指標陣列、結構陣列等各種類別。是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。是包含n(n>0)個結點的有窮集合k,且在k中定義了乙個關係n,n滿足 以下條件:
(1)有且僅有乙個結點 k0,他對於關係n來說沒有前驅,稱k0為樹的根結點。簡稱為根(root)。 (2)除k0外,k中的每個結點,對於關係n來說有且僅有乙個前驅。
(3)k中各結點,對關係n來說可以有m個後繼(m>=0)。圖是由結點的有窮集合v和邊的集合e組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係。在電腦科學中,堆是一種特殊的樹形資料結構,每個結點都有乙個值。通常我們所說的堆的資料結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是乙個堆。若結構中存在關鍵字和k相等的記錄,則必定在f(k)的儲存位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關係f為雜湊函式(hash function),按這個思想建立的表為雜湊表。
資料結構基礎1 陣列
前言 線性表的陣列描述,在物理空間上連續儲存,利用索引隨機讀取元素。線性表 也稱為有序表,形如 e0,e1,e2.en 1 n為有窮自然數,可以認為e0先於e1,e1先於e2,除了這種先後關係,線性表不再有其他關係。題目 給定兩個有序整數陣列nums1和nums2,將它們合併成新的有序陣列nums3...
資料結構1 基礎定義
程式 資料結構 演算法 資料結構 基於c語言來說,c只給出了一些基本的資料型別,如int,char等,但處理複雜問題時,只用這些基本的資料型別很難設計出高效的演算法去解決問題,比如 設計乙個學生資訊管理系統,乙個學生的資訊包括 學號,姓名,性別,籍貫,專業,等等,學號是數字,其他的是字元,如果乙個乙...
資料結構基礎筆記(1)
c語言中只有定義了變數才會分配記憶體,定義資料型別不會分配記憶體。1 特點 元素型別相同,大小相等。2 優缺點 優點 訪問速度很快。缺點 插入刪除元素很慢,空間通常有限制,事先必須知道陣列的長度,需要大塊連續記憶體。1 定義 n個結點離散分配,彼此通過指標相連,每個結點只有乙個前驅結點,只有乙個後續...