✔ 最佳答案
其實data structure並不是pascal所獨有的, 以下是維基解釋數據結構的定義
資料結構
資料結構
電腦科學譯名
英文:
Data Structure
圖片參考:
http://upload.wikimedia.org/wikipedia/commons/thumb/7/72/Flag_of_the_Republic_of_China.svg/20px-Flag_of_the_Republic_of_China.svg.png
臺譯:
資料結構
圖片參考:
http://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Flag_of_Hong_Kong.svg/20px-Flag_of_Hong_Kong.svg.png
港譯:
資料結構
圖片參考:
http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_the_People%27s_Republic_of_China.svg/20px-Flag_of_the_People%27s_Republic_of_China.svg.png
中譯:
数据结构
資料結構是電腦存儲、組織數據的方式。通常情況下,精心選擇的資料結構可以帶來更高的運行或者存儲效率的演算法。資料結構往往同高效的檢索演算法和索引技術有關。
在許多類型的程序的設計中,資料結構的選擇是一個基本的設計考慮因素。許多大型系統的構造經驗表明,系統實現的困難程度和系統構造的質量都嚴重的依賴於是否選擇了最優的資料結構。許多時候,確定了資料結構後,演算法就容易得到了。有些時候事情也會反過來,我們根據特定演算法來選擇資料結構與之適應。不論哪種情況,選擇合適的資料結構都是非常重要的。
選擇了資料結構,演算法也隨之確定,是數據而不是演算法是系統構造的關鍵因素。這種洞見導致了許多種軟體設計方法和程式語言的出現,物件導向的程序設計語言就是其中之一。
在電腦科學中,資料結構是一門研究非數值計算的程序設計問題中電腦的操作對象(數據元素)以及它們之間的關係和運算等的學科,而且確保經過這些運算後所得到的新結構仍然是原來的結構類型。
「資料結構」作為一門獨立的課程在國外是從1968年才開始設立的。 1968年美國高德納教授開創了資料結構的最初體系,他所著的《電腦程序設計藝術》第一卷《基本演算法》是第一本較系統地闡述數據的邏輯結構和存儲結構及其操作的著作。「資料結構」在電腦科學中是一門綜合性的專業基礎課。資料結構是介於數學、電腦硬體和電腦軟體三者之間的一門核心課程。資料結構這一門課的內容不僅是一般程序設計(特別是非數值性程序設計)的基礎,而且是設計和實現編譯程序、作業系統、資料庫系統及其他系統程序的重要基礎。
電腦是一門研究用電腦進行信息表示和處理的科學。這裡面涉及到兩個問題:
信息的表示
信息的處理
而信息的表示和組又直接關係到處理信息的程序的效率。隨著電腦的普及,信息量的增加,信息範圍的拓寬,使許多系統程序和應用程序的規模很大,結構又相當複雜。因此,為了編寫出一個「好」的程序,必須分析待處理的對象的特徵及各對象之間存在的關係,這就是資料結構這門課所要研究的問題。眾所周知,電腦的程序是對信息進行加工處理。在大多數情況下,這些信息並不是沒有組織,信息(數據)之間往往具有重要的結構關係,這就是資料結構的內容。數據的結構,直接影響演算法的選擇和效率。
電腦解決一個具體問題時,大致需要經過下列幾個步驟:首先要從具體問題中抽象出一個適當的數學模型,然後設計一個解此數學模型的演算法(Algorithm),最後編出程序、進行測試、調整直至得到最終解答。尋求數學模型的實質是分析問題,從中提取操作的對象,並找出這些操作對象之間含有的關係,然後用數學的語言加以描述。電腦演算法與數據的結構密切相關,演算法無不依附於具體的資料結構,資料結構直接關係到演算法的選擇和效率。運算是由電腦來完成,這就要設計相應的插入、刪除和修改的演算法 。也就是說,資料結構還需要給出每種結構類型所定義的各種運算的演算法。
數據是對客觀事物的符號表示,在電腦科學中是指所有能輸入到電腦中並由電腦程序處理的符號的總稱。
數據元素是數據的基本單位,在電腦程序中通常作為一個整體考慮。一個數據元素由若干個數據項組成。數據項是數據的不可分割的最小單位。有兩類數據元素:一類是不可分割的原子型數據元素,如:整數"5",字元 "N" 等;另一類是由多個款項構成的數據元素,其中每個款項被稱為一個數據項。例如描述一個學生的信息的數據元素可由下列6個數據項組成。其中的出身日期又可以由三個數據項:"年"、"月"和"日"組成,則稱"出身日期"為組合項,而其它不可分割的數據項為原子項。
關鍵字指的是能識別一個或多個數據元素的數據項。若能起唯一識別作用,則稱之為 "主" 關鍵字,否則稱之為 "次" 關鍵字。
數據對象是性質相同的數據元素的集合,是數據的一個子集。數據對象可以是有限的,也可以是無限的。
數據處理是指對數據進行查找、插入、刪除、合併、排序、統計以及簡單計算等的操作過程。在早期,電腦主要用於科學和工程計算,進入八十年代以後,電腦主要用於數據處理。據有關統計資料表明,現在電腦用於數據處理的時間比例達到80%以上,隨著時間的推移和電腦應用的進一步普及,電腦用於數據處理的時間比例必將進一步增大。
資料結構是指同一數據元素類中各數據元素之間存在的關係。資料結構分別為邏輯結構、存儲結構(物理結構)和數據的運算。數據的邏輯結構是對數據之間關係的描述,有時就把邏輯結構簡稱為資料結構。邏輯結構形式地定義為(K,R)(或(D,S)),其中,K是數據元素的有限集,R是K上的關係的有限集。
數據元素相互之間的關係稱為結構。有四類基本結構:集合、線性結構、樹形結構、圖狀結構(網狀結構)。樹形結構和圖形結構全稱為非線性結構。集合結構中的數據元素除了同屬於一種類型外,別無其它關係。線性結構中元素之間存在一對一關係,樹形結構中元素之間存在一對多關係,圖形結構中元素之間存在多對多關係。在圖形結構中每個結點的前驅結點數和後續結點數可以任意多個。
資料結構在電腦中的表示(映像)稱為數據的物理(存儲)結構。它包括數據元素的表示和關係的表示。數據元素之間的關係有兩種不同的表示方法:順序映象和非順序映象,並由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。順序存儲方法:它是把邏輯上相鄰的結點存儲在物理位置相鄰的存儲單元里,結點間的邏輯關係由存儲單元的鄰接關係來體現,由此得到的存儲表示稱為順序存儲結構。順序存儲結構是一種最基本的存儲表示方法,通常藉助於程式語言中的數組來實現。連結存儲方法:它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關係是由附加的指針欄位表示的。由此得到的存儲表示稱為鏈式存儲結構,鏈式存儲結構通常藉助於程式語言中的指針類型來實現。索引存儲方法:除建立存儲結點信息外,還建立附加的索引表來標識結點的地址。散列存儲方法:就是根據結點的關鍵字直接計算出該結點的存儲地址。
資料結構中,邏輯上(邏輯結構:數據元素之間的邏輯關係)可以把資料結構分成線性結構和非線性結構。線性結構的順序存儲結構是一種隨機存取的存儲結構,線性表的鏈式存儲結構是一種順序存取的存儲結構。線性表若採用鏈式存儲表示時所有結點之間的存儲單元地址可連續可不連續。邏輯結構與數據元素本身的形式、內容、相對位置、所含結點個數都無關。
演算法的設計取決於數據(邏輯)結構,而演算法的實現依賴於採用的存儲結構。數據的運算是在數據的邏輯結構上定義的操作演算法,如檢索、插入、刪除、更新的排序等。
資料結構的形式定義為:資料結構是一個二元組:
Data-Structure=(D,S)
其中:D是數據元素的有限集,S是D上關係的有限集。
資料結構不同於數據類型,也不同於數據對象,它不僅要描述數據類型的數據對象,而且要描述數據對象各元素之間的相互關係。
數據類型是一個值的集合和定義在這個值集上的一組操作的總稱。數據類型可分為兩類:原子類型、結構類型。一方面,在程式語言中,每一個數據都屬於某種數據類型。類型明顯或隱含地規定了數據的取值範圍、存儲方式以及允許進行的運算。可以認為,數據類型是在程序設計中已經實現了的資料結構。另一方面,在程序設計過程中,當需要引入某種新的資料結構時,總是藉助程式語言所提供的數據類型來描述數據的存儲結構。
電腦中表示數據的最小單位是二進位數的一位,叫做位。我們用一個由若干位組合起來形成的一個位串表示一個數據元素,通常稱這個位串為元素或結點。當數據元素由若干數據項組成時,位串中對應於各個數據項的子位串稱為數據域。元素或結點可看成是數據元素在電腦中的映象。
一個軟體系統框架應建立在數據之上,而不是建立在操作之上。一個含抽象數據類型的軟體模塊應包含定義、表示、實現三個部分。
對每一個資料結構而言,必定存在與它密切相關的一組操作。若操作的種類和數目不同,即使邏輯結構相同,資料結構能起的作用也不同。
不同的資料結構其操作集不同,但下列操作必不可缺:
結構的生成;
結構的銷毀;
在結構中查找滿足規定條件的數據元素;
在結構中插入新的數據元素;
刪除結構中已經存在的數據元素;
遍歷。
抽象數據類型:一個數學模型以及定義在該模型上的一組操作。抽象數據類型實際上就是對該資料結構的定義。因為它定義了一個數據的邏輯結構以及在此結構上的一組演算法。抽象數據類型可用以下三元組表示:(D,S,P)。D是數據對象,S是D上的關係集,P是對D的基本操作集。ADT的定義為:
ADT 抽象數據類型名{
數據對象:(數據元素集合)
數據關係:(數據關係二元組結合)
基本操作:(操作函數的羅列)
} ADT 抽象數據類型名;
抽象數據類型有兩個重要特性:
數據抽象
用ADT描述程序處理的實體時,強調的是其本質的特徵、其所能完成的功能以及它和外部用戶的介面(即外界使用它的方法)。
數據封裝
將實體的外部特性和其內部實現細節分離,並且對外部用戶隱藏其內部實現細節。