正文

在計算機科學(xué)中,資料結構(data structure)是計算機中存儲、組織數據的方式。通常情況下,精心選擇的資料結構可以帶來(lái)最優(yōu)算法效率的演算法。一般而言,資料結構的選擇首先會(huì )從抽象數據類(lèi)型的選擇開(kāi)始。一個(gè)設計良好的資料結構,應該在盡可能使用較少的時(shí)間與空間資源的前提下,為各種臨界狀態(tài)下的運行提供支持。資料結構可通過(guò)編程語(yǔ)言所提供的數據類(lèi)型、引用及其他操作加以實(shí)現。

簡(jiǎn)介

不同種類(lèi)的資料結構適合於不同種類(lèi)的應用,而部分甚至專(zhuān)門(mén)用于特定的作業(yè)任務(wù)。例如,當計算機網(wǎng)路依賴(lài)於路由表運作時(shí),B樹(shù)高度適用於資料庫的封裝。

在許多類(lèi)型的程序設計中,選擇適當的資料結構是一個(gè)主要的考慮因素。許多大型系統的構造經(jīng)驗表明,封裝的困難程度與最終成果的質(zhì)量與表現,都取決於是否選擇了最優(yōu)的資料結構。在許多時(shí)候,確定了資料結構後便能很容易地得到演算法。而有些時(shí)候,方向則會(huì )顛倒過(guò)來(lái):例如當某個(gè)關(guān)鍵作業(yè)需要特定資料結構下的演算法時(shí),會(huì )反過(guò)來(lái)確定其所使用的資料結構。然而,不管是哪種情況,資料結構的選擇都是至關(guān)重要的。

系統構造的關(guān)鍵因素是資料結構而非演算法的這一深入理解,導致了多種形式化的設計方法與程式語(yǔ)言的出現。絕大多數的語(yǔ)言都帶有某種程度上的模塊化思想,通過(guò)將資料結構的具體實(shí)現封裝隱藏於受限介面後方的方法,來(lái)讓不同的應用程序能夠安全地重用這些資料結構。C++、Java等物件導向的程序設計語(yǔ)言可使用類(lèi)來(lái)完成這一功能。

因為資料結構的重要性毋庸置疑,現代程式語(yǔ)言及其運行環(huán)境在標準庫中都包含了多種的資料結構,例如C++標準模板庫中的容器、java集合框架以及微軟的.NET Framework。

大多數資料結構都由數列、記錄、可辨識聯(lián)合、引用等基本類(lèi)型構成。舉例而言,可空引用(nullable reference,一種可被置空的引用)是引用與可辨識聯(lián)合的結合體,而最簡(jiǎn)單的鏈式結構鏈表則是由記錄與可空引用構成。

資料結構意味著(zhù):一個(gè)資料結構可被視為兩個(gè)函數之間的介面,或者是由數據類(lèi)型聯(lián)合組成的存儲內容的訪(fǎng)問(wèn)方法封裝。