常见数据结构
在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)(英語(yǔ):data structure)是計(jì)算機(jī)中存儲(chǔ)、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)意味著接口或封裝:一個(gè)數(shù)據(jù)結(jié)構(gòu)可被視為兩個(gè)函數(shù)之間的接口,或者是由數(shù)據(jù)類型聯(lián)合組成的存儲(chǔ)內(nèi)容的訪問(wèn)方法封裝。-- "維基百科"
1. 鏈表
鏈表是一種非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的;鏈表由一系列節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)包含存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域和存儲(chǔ)下一節(jié)點(diǎn)地址的指針域。由于不必按順序存儲(chǔ),鏈表在插入元素時(shí)可以達(dá)到O(1),但在查找某一元素時(shí)為O(n);
使用鏈表結(jié)構(gòu)可以克服數(shù)組鏈表需要預(yù)先知道數(shù)據(jù)大小的缺點(diǎn),鏈表結(jié)構(gòu)可以充分利用計(jì)算機(jī)內(nèi)存空間,實(shí)現(xiàn)靈活的內(nèi)存動(dòng)態(tài)管理;但是鏈表失去了數(shù)組隨機(jī)讀取的優(yōu)點(diǎn),同時(shí)鏈表由于增加了結(jié)點(diǎn)的指針域,空間開銷比較大;
單向鏈表(鏈表鏈接方向單向,訪問(wèn)要從頭部開始順序讀取);
雙向鏈表(每個(gè)數(shù)據(jù)節(jié)點(diǎn)中都有兩個(gè)指針,一個(gè)指向直接前驅(qū),一個(gè)指向直接后繼);
循環(huán)鏈表(表中最后一個(gè)節(jié)點(diǎn)的指針域指向頭節(jié)點(diǎn),整個(gè)鏈表形成一個(gè)環(huán));
2. 隊(duì)列
先進(jìn)先出的線性表結(jié)構(gòu),插入在一端,刪除在另一端;
3. 棧
先進(jìn)后出的線性表結(jié)構(gòu),只能在一端進(jìn)行插入和刪除操作
4. 哈希表
它通過(guò)把關(guān)鍵碼值映射到表中一個(gè)位置來(lái)訪問(wèn)記錄,以加快查找的速度;這個(gè)映射函數(shù)叫做散列函數(shù),存放記錄的數(shù)組叫做散列表;
5. 堆
看作一棵樹的數(shù)組對(duì)象,堆中某個(gè)節(jié)點(diǎn)的值總是不大于或不小于其父節(jié)點(diǎn)的值,堆總是一棵完全二叉樹;根節(jié)點(diǎn)最大的叫大根堆,根節(jié)點(diǎn)最小的叫小根堆;
6. 優(yōu)先隊(duì)列
優(yōu)先隊(duì)列中,元素被賦予優(yōu)先級(jí),當(dāng)訪問(wèn)元素時(shí),具有最高優(yōu)先級(jí)的元素最先刪除;常采用堆數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn);
7. 字典樹(非線性結(jié)構(gòu))
是哈希樹的變種,典型應(yīng)用是用于統(tǒng)計(jì),排序和保存大量的字符串(但不僅限于字符串),所以經(jīng)常被搜索引擎系統(tǒng)用于文本詞頻統(tǒng)計(jì)。利用字符串的公共前綴來(lái)減少查詢時(shí)間,最大限度地減少無(wú)謂的字符串比較,查詢效率比哈希樹高;
8. 樹(非線性結(jié)構(gòu))
二分查找樹(BST,左子樹節(jié)點(diǎn)都比根節(jié)點(diǎn)小,右子樹節(jié)點(diǎn)都比根節(jié)點(diǎn)大);
平衡二叉樹(AVL,它是一棵空樹或它的左右兩個(gè)子樹的高度差(平衡因子:結(jié)點(diǎn)左子樹的深度減去右子樹的深度)的絕對(duì)值不超過(guò)1,并且左右兩個(gè)子樹都是一棵平衡二叉樹);
紅黑樹(自平衡的二叉查找樹,規(guī)則1節(jié)點(diǎn)是紅或黑,規(guī)則2根節(jié)點(diǎn)黑色,規(guī)則3每個(gè)葉子節(jié)點(diǎn)都是黑色的空節(jié)點(diǎn)(NIL),規(guī)則4每個(gè)紅色節(jié)點(diǎn)的兩個(gè)子節(jié)點(diǎn)都是黑色(不能有兩個(gè)連續(xù)的紅色節(jié)點(diǎn)),規(guī)則5從任一節(jié)點(diǎn)到其每個(gè)葉子的所有路徑都包含相同數(shù)目的黑色節(jié)點(diǎn))(變色、旋轉(zhuǎn))
9. 圖(非線性結(jié)構(gòu))
無(wú)向圖(邊沒有方向的圖);
連通圖(在無(wú)向圖中,若從頂點(diǎn)i到頂點(diǎn)j有路徑相連(當(dāng)然從j到i也一定有路徑),則稱i和j是連通的;如果是有向圖,那么連接i和j的路徑中所有的邊都必須同向;如果圖中任意兩點(diǎn)都是連通的,那么圖被稱作連通圖。如果此圖是有向圖,則稱為強(qiáng)連通圖);
總結(jié)
- 上一篇: 解决oninput在输入中文时,会获取拼
- 下一篇: Eclipse3.6.2 64位启动报“