抽象數據類型
1、引言
1抽象數據類型和數據結構的關係
抽象數據類型(ADT)是一種比數據結構處於更高抽象層的數據類型,ADT使用數據結構來實現。
2數據類型的定義和應用於數據的操作定義是ADT背後的一部分概念,隱藏數據上的操作是如何進行的。
3分類:簡單抽象數據類型和複雜抽象數據類型
簡單ADT:整數、實數、字符、指針;
複雜ADT:需要建立。不需要詳細說明實現過程的泛化操作成爲抽象。
抽象概念意味着:
①知道一個數據類型能做什麼;
②如何去做是隱藏的。
4定義
抽象數據類型就是與對數據類型有意義的操作封裝在一起的數據聲明。然後,用它封裝數據和操作並對用戶隱藏。
抽象數據類型:
①數據的定義;
②操作的定義;
③封裝數據和操作。
5抽象數據類型的模型
抽象數據類型的模型分兩個部分:數據類型和操作函數(公有的和私有的);
規則:
①數據結構(如數組、鏈表)在抽象數據類型裏面,被公有和私有操作使用;
②應用程序只能通過接口訪問公有操作;
③私有操作是抽象數據類型的內部用戶使用的;
④雖然公有操作和接口應該獨立於實現,但私有操作依賴於抽象數據類型實現時所選擇的數據類型。
6抽象數據類型的實現
計算機語言不提供抽象數據類型包。要使用抽象數據類型,首先要實現它們,把它們存儲在庫中。
7幾種複雜的數據類型
①棧
②隊列
③廣義線性表
④樹(二叉樹、二叉搜索樹)
⑤圖
2、棧
1棧的定義
棧是一種限制線性列表,該類型表的添加和刪除操作只能在一端實現,稱爲棧頂。
倒轉的屬性是棧被稱爲後進先出數據結構的原因。
2棧的操作
①建棧
②入棧
③出棧
④空
3棧的抽象數據類型
4棧的應用
①倒轉數據
②配對數據
③數據延遲使用
④回溯步驟
5棧的實現
①使用數組實現:有帶兩個域的記錄
②使用鏈表實現:有一個有棧名字的額外節點
3、隊列
1隊列的定義
2隊列的操作
3隊列的抽象數據類型
4隊列的應用
5隊列的實現
4、廣義線性表
1廣義線性表的定義
2廣義線性表的操作
3廣義線性表的抽象數據類型
4廣義線性表的應用
5廣義線性表的實現
5、樹的基礎知識
6、二叉樹
1二叉樹的遞歸定義
2二叉樹的操作
3二叉樹的應用
4二叉樹的實現
7、二叉搜索樹
1二叉搜索樹的定義
2二叉搜索樹的抽象數據類型
3二叉搜索樹的實現
8、圖
1圖的定義
2圖的應用