抽象資料結構(ADT)的介紹
阿新 • • 發佈:2018-12-12
前言:
抽象資料型別(ADT(abstract data type))是一些操作的集合。抽象資料型別是數學的抽象;在ADT的定義中根本沒有涉及如何實現操作的集合。
整數,實數及布林量有與它們相關的操作,而抽象資料型別也有自己額相關操作。對於集合ADT,有並,交,測定大小,取餘等操作。
表,棧和佇列
表
- 操作:
插入,刪除,查詢… - 應用:
多項式ADT(一元多項式)
基數排序(線形時間排序)
多重表(大學的課程註冊)
棧:
- 操作:
入棧,出棧 - 應用:
平衡符號
字尾表示式
函式的呼叫
佇列:
- 操作:
入隊,出隊 - 應用:
行式印表機
買票佇列
計算機網路訪問
接線員的操作(大公司的傳呼)
樹
對於大量的輸入資料,連結串列的線性訪問時間太慢,不宜使用。所以產生了另一種簡單的資料結構:樹,其大部分操作的平均執行時間為O(logN)。
定義:
定義樹的一種自然方法是遞迴的方法,一根樹是一些節點的集合。這個集合可以是空集;若非空,則一根樹由稱作根(root)的節點以及0個或多個非空的子樹T1,T2…Tn組成,這些子樹中每一棵的根都被來自根r的一條有向的邊(edge)所連線。
樹的遍歷及應用
- 目錄結構
設我們想列出目錄中所有檔案的名字。我們的輸出格式為:深度為di的檔案的名字將被di次跳格(tab)縮排後打印出來
staic void
listDir(DirectoryOrFile D,int Depth)
{
if (D is a legitimate entry)
{
PrintName(D,Depth);
if(D is a directory )
for each child,C, of D
ListDir(C,depth+1);
}
}
void ListDirectory(DirectoryOrFile D)
{
LsitDir(D,0)
}