資料結構是電腦儲存、組織資料的方式,是指相互之間存在一種或多種特定關係的資料元素的集合;它研究的是資料的邏輯結構和資料的物理結構以及它們之間的相互關係,並對這種結構定義相適應的運算,設計出相應的演算法,並確保經過這些運算以後所得到的新結構仍保持原來的結構類型。
本教學操作環境:windows7系統、Dell G3電腦。
資料結構是電腦儲存、組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的運作或儲存效率。資料結構往往與高效率的檢索演算法和索引技術有關。
名詞定義
資料結構是指彼此之間存在著一種或多種關係的資料元素的集合和該集合中資料元素之間的關係組成。記為:
Data_Structure=(D,R)
其中D是資料元素的集合,R是該集合中所有元素之間的關係的有限集合。
(一)常用結構
#1.陣列:在程式設計中,為了處理方便, 把具有相同型別的若干變數以有序的形式組織起來。這些按序排列的同類資料元素的集合稱為數組。在C語言中,數組屬於構造資料型態。一個陣列可以分解為多個數組元素,這些數組元素可以是基本資料類型或是構造類型。因此依數組元素的類型不同,數組又可分為數值數組、字元數組、指標數組、結構數組等各種類別。
2.堆疊: 是只能在某一端插入和刪除的特殊線性表。它按照先進後出的原則儲存數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀取數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。
3.佇列: 一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列是按照「先進先出」或「後進後出」的原則組織資料的。隊列中沒有元素時,稱為空隊列。
4.鍊錶:是一種物理儲存單元上非連續、非順序的儲存結構,它既可以表示線性結構,也可以用來表示非線性結構,資料元素的邏輯順序是透過鍊錶中的指標連結次序實現的。鍊錶由一系列結點(鍊錶中每一個元素稱為結點)組成,結點可以在運行時動態產生。每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點位址的指標域。
5.樹: 是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關係N,N滿足以下條件:
(1)有且僅有一個結點K0,他對於關係N來說沒有前驅,稱K0為樹的根結點。簡稱為根(root)。
(2)除K0外,K中的每個結點,對於關係N來說有且僅有一個前驅。
(3)K中各結點,對關係N來說可以有m個後繼(m>=0)。
6.圖: 是由結點的有窮集合V和邊的集合E組成。其中,為了與樹狀結構加以區別,在圖結構中常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係。
7.堆:在電腦科學中,堆是一種特殊的樹狀資料結構,每個結點都有一個值。通常我們所說的堆的資料結構,是指二元堆。堆的特徵是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
8.散列表(Hash table,也叫雜湊表): 若結構中存在關鍵字和K相等的記錄,則必定在f(K)的儲存位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關係f為雜湊函數(Hash function),依這個想法建立的表為散列函數。
9.八大排序演算法: 排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要存取外存。常見的內部排序演算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。
1.資料的邏輯結構:指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關係是指資料元素之間的前後件關係,而與他們在電腦中的儲存位置無關。
邏輯結構包括:
1)集合
資料結構中的元素之間除了「同屬一個集合」 的相互關係外,別無其他關係;
2)線性結構
資料結構中的元素存在一對一的相互關係;
3)樹狀結構
資料結構中的元素存在一對多的相互關係;
4)圖形結構
資料結構中的元素存在多對多的相互關係。
2.資料的物理結構:指資料的邏輯結構在電腦儲存空間的存放形式。
資料的實體結構是電腦結構中資料結構的表示(又稱為映像),它包含資料元素的機內表示和關係的機內表示。由於具體實現的方法有順序、連結、索引、雜湊等多種,所以,一種資料結構可表示成一種或多種儲存結構。
資料元素的機內表示(映像方法): 以二進位位元(bit)的位元串表示資料元素。通常稱這種位元串為節點(node)。當資料元素有若干資料項組成時,位元串中與資料項對應的子位元串稱為資料域(data field)。因此,節點是資料元素的機內表示(或機內映像)。關係的機內表示(映像方法):資料元素之間的關係的機內表示可以分為順序映像和非順序映像,常用兩種儲存結構:順序儲存結構和鍊式儲存結構。順序映像藉由元素在記憶體中的相對位置來表示資料元素之間的邏輯關係。非順序映像藉助指示元素儲存位置的指標(pointer)來表示資料元素之間的邏輯關係。
3.資料結構的運算
一般認為,一個資料結構是由資料元素依據某種邏輯連結組織起來的。資料元素間邏輯關係的描述稱為資料的邏輯結構;資料必須在電腦內存儲,資料的儲存結構是資料結構的實現形式,是其在電腦內的表示;此外討論一個資料結構必須同時討論在該類別資料上執行的運算才有意義。一個邏輯資料結構可以有多種儲存結構,且各種儲存結構影響資料處理的效率。
在許多類型的程式的設計中,資料結構的選擇是一個基本的設計考慮因素。許多大型系統的構造經驗表明,系統實現的困難程度和系統構造的品質都嚴重的依賴於是否選擇了最優的資料結構。許多時候,確定了資料結構後,演算法就容易取得了。有些時候事情也會反過來,我們會根據特定演算法來選擇資料結構與之適應。不論哪一種情況,選擇合適的資料結構都是非常重要的。
選擇了資料結構,演算法也隨之確定,是資料而不是演算法是系統構造的關鍵因素。這種洞見導致了許多種軟體設計方法和程式設計語言的出現,物件導向的程式設計語言就是其中之一。
計算機解決一個特定問題時,大致需要經過下列幾個步驟:首先要從特定問題中抽像出一個適當的數學模型,然後設計一個解此數學模型的演算法(Algorithm),最後一個編出程式、進行測試、調整直至得到最終解答。
尋求數學模型的實質是分析問題,從中提取操作的對象,並找出這些操作對象之間所含的關係,然後用數學的語言加以描述。當人們用計算機處理數值計算問題是,所使用的數學模型是用數學方程式來描述。所涉及的運算物件一般是簡單的整形、實型和邏輯型數據,因此程式設計者的主要精力集中在程式設計技巧上,而不是數據的儲存和組織。然而,電腦應用的更多領域是“非數值型計算問題”,它們的數學模型無法用數學方程式描述,而是用數據結構描述,解決此類問題的關鍵是設計出合適的數據結構,描述非數值型問題的數學模型是用線性表、樹、圖等結構來描述的。
計算機演算法與資料的結構密切相關,演算法無不依附於特定的資料結構,資料結構直接關係到演算法的選擇與效率。運算是由電腦來完成,這就要設計對應的插入、刪除和修改的演算法 。也就是說,資料結構還需要給出每種結構類型所定義的各種運算的演算法。 資料物件是性質相同的資料元素的集合,是資料的子集。資料對象可以是有限的,也可以是無限的。資料處理是指資料進行尋找、插入、刪除、合併、排序、統計、以及簡單計算等的操作過程。
(二)結構分類
# 資料結構指同一資料元素類別中各資料元素之間所存在的關係。資料結構分別為邏輯結構、儲存結構(物理結構)、資料的運算。資料的邏輯結構是從具體問題抽象化的數學模型,是描述資料元素及其關係的數學特性的,有時就把邏輯結構簡稱為資料結構。邏輯結構是在電腦儲存中的映像,形式定義為(K,R)(或(D,S)),其中,K是資料元素的有限集合,R是K上的關係的有限集合。
根據資料元素間關係的不同特性,通常有下列四類基本的結構:
⑴集合結構。此結構的資料元素間的關係是「屬於同一個集合」。
⑵線性結構。此結構的資料元素之間存在著一對一的關係。
⑶樹型結構。此結構的資料元素之間存在著一對多的關係
⑷圖形結構。此結構的資料元素之間存在著多對多的關係,也稱為網狀結構。從上面介紹的資料結構的概念可以知道,一個資料結構有兩個要素。一個是資料元素的集合,另一個是關係的集合。在形式上,資料結構通常可以採用一個二元組來表示。
資料結構的形式定義為:資料結構為二元組 :Data_Structure=(D,R),其中,D是資料元素的有限集,R是D上關係的有限集合。線性結構的特徵是資料元素之間是一種線性關係,資料元素「一個接一個的排列」。在一個線性表中資料元素的類型是相同的,或者說線性表是由同一類型的資料元素所構成的線性結構。在實際問題中線性表的例子是很多的,如學生情況資訊表是一個線性表:表中資料元素的類型為學生類型; 一個字串也是一個線性表:表中資料元素的類型為字元型,等等。
線性表是最簡單、最基本、最常用的一種線性結構。線性表是具有相同資料型態的n(n>=0)個資料元素的有限序列,通常記為: (a1,a2,… ai-1,ai,ai 1,…an) ,其中n為表長, n=0 時稱為空表。它有兩種存儲方法:順序存儲和鍊式存儲,它的主要基本操作是插入、刪除和檢索等。
資料結構在電腦中的表示(映像)稱為資料的實體(儲存)結構。它包括資料元素的表示和關係的表示。資料元素之間的關係有兩種不同的表示方法:順序映像和非順序映像,並由此得到兩種不同的儲存結構:順序儲存結構和鍊式儲存結構。
順序儲存方法:它是把邏輯上相鄰的結點儲存在物理位置相鄰的儲存單元裡,結點間的邏輯關係由儲存單元的鄰接關係來體現,由此得到的儲存表示稱為順序儲存結構。順序儲存結構是一種最基本的儲存表示方法,通常藉助程式設計語言中的陣列來實現。
連結儲存方法:它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關係是由附加的指標欄位表示的。由此得到的儲存表示稱為鍊式儲存結構,鍊式儲存結構通常藉助於程式設計語言中的指標類型來實作
索引儲存方法:除建立儲存結點資訊外,還會建立附加的索引表來標識結點的位址。
雜湊儲存方法:就是根據結點的關鍵字直接計算出該結點的儲存位址。
資料結構中,邏輯上(邏輯結構:資料元素之間的邏輯關係)可以把資料結構分成線性結構和非線性結構。線性結構的順序儲存結構是一種順序存取的儲存結構,線性表的鍊式儲存結構是隨機存取的儲存結構。線性表若採用鍊式儲存表示時所有結點之間的儲存單元位址可連續可不連續。邏輯結構與資料元素本身的形式、內容、相對位置、所含結點個數都無關。
(三)結構演算法
演算法的設計取決於資料(邏輯)結構,而演算法的實作則依賴於採用的儲存結構。資料的儲存結構實質上是它的邏輯結構在電腦記憶體中的實現,為了全面的反映一個資料的邏輯結構,它在記憶體中的映像包括兩方面內容,即資料元素之間的資訊和資料元素之間的關係。不同資料結構有其對應的若干運算。資料的運算是在資料的邏輯結構上定義的操作演算法,如檢索、插入、刪除、更新和排序等。
資料結構不同於資料類型,也不同於資料對象,它不只要描述資料類型的資料對象,也要描述資料對象各元素之間的相互關係。
資料型別是一個值的集合和定義在這個值集上的一組運算的總稱。資料型態可分為兩大類:原子型別、結構型別。一方面,在程式設計語言中,每一個資料都屬於某種資料型態。類型明顯或隱含地規定了資料的取值範圍、儲存方式以及允許進行的運算。可以認為,資料類型是在程式設計中已經實現了的資料結構。另一方面,在程式設計過程中,當需要引入某種新的資料結構時,總是藉助程式語言所提供的資料類型來描述資料的儲存結構。計算機中表示資料的最小單位是二進制數的一位,稱為位。我們用一個由若干位元組合起來形成的一個位元串來表示一個資料元素,通常稱這個位元串為元素或結點。當資料元素由若干資料項組成時,位元串中對應於各個資料項的子位元串稱為資料域。元素或結點可看成是資料元素在計算機中的映像。
一個軟體系統框架應建立在資料之上,而不是建立在操作之上。一個包含抽象資料類型的軟體模組應包含定義、表示、實現三個部分。
對每一個資料結構而言,必定存在與它密切相關的一組操作。若操作的種類和數目不同,即使邏輯結構相同,資料結構能扮演的角色也不同。
不同的資料結構其操作集不同,但下列操作必不可缺少:
1,結構的生成;
2.結構的銷毀;
3,在結構中尋找符合規定條件的資料元素;
4,在結構中插入新的資料元素;
5,刪除結構中已經存在的資料元素;
6,遍歷。
抽象資料型別:一個數學模型以及定義在這個模型上的一組運算。抽象資料型別其實就是對該資料結構的定義。因為它定義了一個資料的邏輯結構以及在此結構上的一組演算法。抽象資料型別可用以下三元組表示:(D,S,P)。 D是資料對象,S是D上的關係集,P是D的基本操作集。 ADT的定義為:ADT 抽象資料型別名:{資料物件:(資料元素集合),資料關係:(資料關係二元組結合),基本運算:(運算函數的羅列)};ADT抽象資料型別名稱;抽象資料類型有兩個重要功能:
資料抽象化:使用ADT描述程式處理的實體時,強調的是其本質的特徵、其所能完成的功能以及它和外部使用者的介面(即外界使用它的方法)。
資料封裝:將實體的外部特性及其內部實作細部分離,並且對外部使用者隱藏其內部實作細節。
資料(Data)是資訊的載體,它能夠被電腦辨識、儲存和加工處理。它是電腦程式加工的原料,應用程式處理各種各樣的數據。在計算機科學中,所謂數據就是電腦加工處理的對象,它可以是數值數據,也可以是非數值數據。數值資料為一些整數、實數或複數,主要用於工程計算、科學計算和商務處理等;非數值資料包括字元、文字、圖形、影像、語音等。
資料元素(Data Element)是資料的基本單位。在不同的條件下,資料元素又可稱為元素、結點、頂點、記錄等。例如,學生資訊檢索系統中學生資訊表中的一個記錄等,都稱為一個資料元素。有時,一個資料元素可由若干個資料項(Data Item)組成,例如,學籍管理系統中學生資訊表的每一個資料元素就是一個學生記錄。它包括學生的學號、姓名、性別、籍貫、出生年月、成績等資料項。這些資料項可以分為兩種:一種稱為初等項,如學生的性別、籍貫等,這些資料項是在資料處理時不能再分割的最小單位;另一種叫做組合項,如學生的成績,它可以再劃分為數學、物理、化學等較小的項。通常,在解決實際應用問題時是把每個學生記錄當作一個基本單位進行訪問和處理的。
資料物件(Data Object)或資料元素類別(Data Element Class)是具有相同性質的資料元素的集合。在某個特定問題中,資料元素都具有相同的性質(元素值不一定相等),屬於同一資料物件(資料元素類別),資料元素是資料元素類別的一個實例。例如,在交通諮詢系統的交通網中,所有的頂點都是一個資料元素類,頂點A和頂點B各自代表一個城市,是該資料元素類中的兩個實例,其資料元素的值分別為A和B。資料結構(Data Structure)是指互相之間存在著一種或多種關係的資料元素的集合。在任何問題中,資料元素之間都不會是孤立的,在它們之間都存在著這樣或那樣的關係,這種資料元素之間的關係稱為結構。
更多相關知識,請造訪常見問題欄位!
以上是計算機的資料結構是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!