1. 什么是數(shù)據(jù)結(jié)構(gòu)喊巍?
數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中的操作對象,以及他們之間的關(guān)系和操作等相關(guān)問題的學(xué)科谐腰。
- 通俗來說數(shù)據(jù)結(jié)構(gòu)是:
- 程序設(shè)計(jì) = 數(shù)據(jù)結(jié)構(gòu) + 算法
- 再簡單的來說數(shù)據(jù)結(jié)構(gòu)就是關(guān)系率寡,就是數(shù)據(jù)元素相互之間存在的一種或多種特定關(guān)系的集合。
2. 邏輯結(jié)構(gòu)和物理結(jié)構(gòu)
- 傳統(tǒng)上扁誓,我們把數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu)防泵。
- 邏輯結(jié)構(gòu):是指數(shù)據(jù)對象中數(shù)據(jù)袁術(shù)之間的相互關(guān)系,也是我們今后最需要關(guān)注和討論的問題蝗敢。
- 物理結(jié)構(gòu):是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存儲形式捷泞。
2.1 四大邏輯結(jié)構(gòu)
- 集合結(jié)構(gòu):集合結(jié)構(gòu)中的數(shù)據(jù)元素出了同一個(gè)集合外,他們之間沒有其他關(guān)系寿谴。
- 樹形結(jié)構(gòu):樹形結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一種一堆多的層次關(guān)系锁右。
- 圖形結(jié)構(gòu):圖形結(jié)構(gòu)的數(shù)據(jù)元素是多對多的關(guān)系。
- 物理結(jié)構(gòu)
- 物理結(jié)構(gòu)實(shí)際上研究的就是如何把數(shù)據(jù)元素存儲到計(jì)算機(jī)的存儲器中拭卿。
- 存儲器主要是正對內(nèi)存而言的骡湖,像硬盤、軟盤峻厚、光盤等外部存儲器的數(shù)據(jù)組織通常用文件結(jié)構(gòu)來描述响蕴。
2.2 數(shù)據(jù)元素的存儲結(jié)構(gòu)形式有兩種:順序存儲和鏈?zhǔn)酱鎯Α?/h2>
順序存儲結(jié)構(gòu):是把數(shù)據(jù)元素存放在地址連續(xù)的寸純單元里,其數(shù)據(jù)間的邏輯關(guān)系和物理關(guān)系是一致的惠桃。比如:現(xiàn)實(shí)生活中的排隊(duì)浦夷。
鏈?zhǔn)酱鎯Y(jié)構(gòu):是把數(shù)據(jù)元素存放在任意的存儲單元里,這組存儲單元可以是連續(xù)的辜王,也可以是不連續(xù)的劈狐。比如:銀行取號排隊(duì)。很顯然呐馆,這樣的話鏈?zhǔn)酱鎯Y(jié)果的數(shù)據(jù)元素存儲關(guān)系并不能反映其邏輯關(guān)系肥缔,因此需要用一個(gè)指針存放數(shù)據(jù)元素的地址,這樣子通過地址就可以找到相關(guān)數(shù)據(jù)元素的位置汹来。指針就是鏈著它們關(guān)系的鏈续膳。
順序存儲結(jié)構(gòu):是把數(shù)據(jù)元素存放在地址連續(xù)的寸純單元里,其數(shù)據(jù)間的邏輯關(guān)系和物理關(guān)系是一致的惠桃。比如:現(xiàn)實(shí)生活中的排隊(duì)浦夷。
鏈?zhǔn)酱鎯Y(jié)構(gòu):是把數(shù)據(jù)元素存放在任意的存儲單元里,這組存儲單元可以是連續(xù)的辜王,也可以是不連續(xù)的劈狐。比如:銀行取號排隊(duì)。很顯然呐馆,這樣的話鏈?zhǔn)酱鎯Y(jié)果的數(shù)據(jù)元素存儲關(guān)系并不能反映其邏輯關(guān)系肥缔,因此需要用一個(gè)指針存放數(shù)據(jù)元素的地址,這樣子通過地址就可以找到相關(guān)數(shù)據(jù)元素的位置汹来。指針就是鏈著它們關(guān)系的鏈续膳。