一、定義與目的
數(shù)據(jù)結(jié)構(gòu)就是數(shù)據(jù)的組織形式仔雷,在應(yīng)用中涉及各種各樣的數(shù)據(jù),為了存儲(chǔ)它們,組織它們碟婆,需要討論它們的歸來(lái)及它們之間的關(guān)系电抚,從而建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu),并以此實(shí)現(xiàn)要求的軟件功能竖共。
二蝙叛、分類
- 線性結(jié)構(gòu):也成為線性表,在這種結(jié)構(gòu)中所有數(shù)據(jù)元素都按某種次序排列在一個(gè)序列中公给。根據(jù)對(duì)線性結(jié)構(gòu)中數(shù)據(jù)元素存取方法的不同借帘,又可分為直接存取結(jié)構(gòu)、順序存取結(jié)構(gòu)和字典結(jié)構(gòu)淌铐。對(duì)于直接存取結(jié)構(gòu)肺然,可以直接存取某一指定項(xiàng)而不須先訪問(wèn)其前驅(qū),就像數(shù)組腿准、文件际起,可以根據(jù)下標(biāo)直接存取某一數(shù)組元素,可以按記錄號(hào)直接檢索記錄集合或文件中的某一記錄吐葱。對(duì)于順序存取結(jié)構(gòu)街望,只能從序列中第一個(gè)數(shù)據(jù)元素起,按序列組個(gè)訪問(wèn)直到指定的元素(如棧弟跑、隊(duì)列灾前、優(yōu)先級(jí)隊(duì)列等)。而字典結(jié)構(gòu)就是通過(guò)關(guān)鍵碼(Key)進(jìn)行索引孟辑,例如我們要查詢學(xué)生記錄哎甲,可以設(shè)定學(xué)生的學(xué)號(hào)為關(guān)鍵碼,用它來(lái)識(shí)別是哪一位學(xué)生的記錄扑浸。
- 非線性結(jié)構(gòu)
在非線性結(jié)構(gòu)中的各個(gè)數(shù)據(jù)元素不再保持在一個(gè)線性序列中烧给,每個(gè)數(shù)據(jù)元素可能與零個(gè)或多個(gè)其他數(shù)據(jù)元素發(fā)生關(guān)系。根據(jù)關(guān)系的不同可分為層次結(jié)構(gòu)(如樹(shù)形結(jié)構(gòu))和群結(jié)構(gòu)(圖結(jié)構(gòu)喝噪、網(wǎng)絡(luò)結(jié)構(gòu))础嫡。
三、意義
社會(huì)的發(fā)展酝惧,要求使用計(jì)算機(jī)解決更復(fù)雜的問(wèn)題榴鼎,而更復(fù)雜的問(wèn)題需要更大的計(jì)算量,從而要求計(jì)算機(jī)程序的運(yùn)算速度更快晚唇。選擇不同數(shù)據(jù)結(jié)構(gòu)可能會(huì)殘生很大的差異:同樣一個(gè)程序巫财,選擇某一種數(shù)據(jù)結(jié)構(gòu)可能在幾秒鐘內(nèi)運(yùn)行完成,而選擇另一種數(shù)據(jù)結(jié)構(gòu)則可能需要幾天時(shí)間才能運(yùn)算完畢哩陕。
四平项、存儲(chǔ)問(wèn)題
數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)可以用以下4種存儲(chǔ)方法得到:
- 順序存儲(chǔ):邏輯相連的元素赫舒,物理位置也相連;
- 鏈接存儲(chǔ):邏輯相連闽瓢,物理位置不一定相連接癌,而是根據(jù)元素中的指針指示上一個(gè)或者下一個(gè)元素的位置;
- 索引存儲(chǔ):該方法在存儲(chǔ)元素信息的同時(shí)扣讼,還建立附加的索引表缺猛,索引表中每一項(xiàng)成為索引項(xiàng),索引項(xiàng)的一般形式是:關(guān)鍵碼+地址
- 散列存儲(chǔ):該方法的處理方式是根據(jù)結(jié)點(diǎn)的關(guān)鍵碼通過(guò)一個(gè)函數(shù)計(jì)算直接得到該結(jié)點(diǎn)的存儲(chǔ)地址椭符;