資料結構
在電腦科學中,資料結構(data structure)是電腦中儲存、組織資料的方式。通 常情況下,精心選擇的資料結構可以帶來最優效率的演算法。
一般而言,資料結構的選擇首先會從抽象資料型別的選擇開始。一個設計良好的 資料結構,應該在儘可能使用較少的時間與空間資源的前提下,為各種臨界狀態 下的執行提供支援。資料結構可透過編程語言所提供的資料型別、參照及其他操 作加以實作。
不同種類的資料結構適合於不同種類的應用,而部分甚至專門用於特定的作業任 務。例如,當電腦網路依賴於路由表運作時,B 樹高度適用於資料庫的封裝。
在許多型別的程式設計中,選擇適當的資料結構是一個主要的考慮因素。許多大 型系統的構造經驗表明,封裝的困難程度與最終成果的質量與表現,都取決於是 否選擇了最優的資料結構。在許多時候,確定了資料結構後便能很容易地得到演 算法。而有些時候,方向則會顛倒過來:例如當某個關鍵作業需要特定資料結構 下的演算法時,會反過來確定其所使用的資料結構。然而,不管是哪種情況,資 料結構的選擇都是至關重要的。
系統構造的關鍵因素是資料結構而非演算法的這一深入理解,導致了多種形式化 的設計方法與程式語言的出現。絕大多數的語言都帶有某種程度上的模組化思想,
透過將資料結構的具體實作封裝隱藏於受限介面後方的方法,來讓不同的應用程 式能夠安全地重用這些資料結構。C++、Java、Python 等物件導向的程式設計語 言可使用類來完成這一功能。
因為資料結構的重要性毋庸置疑,現代程式語言及其執行環境在標準庫中都包含 了多種的資料結構,例如 C++標準模板庫中的容器、Java 集合框架以及微軟的.NET Framework。
大多數資料結構都由數列、記錄、可辨識聯合、參照等基本型別構成。舉例而言,
可空參照(nullable reference,一種可被置空的參照)是參照與可辨識聯合的結 合體,而最簡單的鏈式結構連結串列則是由記錄與可空參照構成。
資料結構意味著介面或封裝:一個資料結構可被視為兩個函式之間的介面,或者 是由資料型別聯合組成的儲存內容的存取方法封裝。
常見的資料結構
陣列 (Array) 堆疊 (Stack) 隊列 (Queue) 鏈錶 (Linked List) 樹 (Tree)
圖 (Graph) 堆 (Heap) 雜湊 (Hash)