官术网_书友最值得收藏!

1.1.1 數(shù)據(jù)結(jié)構(gòu)的定義

數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種關(guān)系的數(shù)據(jù)元素的集合,以及該集合中元素之間的關(guān)系。這個科學(xué)定義比較抽象,如何理解呢?

讓我們一起假想一個實際場景:請編寫一個程序,輸入3個整數(shù),找出這3個整數(shù)中最小的數(shù)字。

不妨設(shè)3個變量a、b、c,用于存儲輸入的3個整數(shù),輸入完成以后,假設(shè)a是最小的。將a和b進(jìn)行比較,如果b比a小,則把b的值賦給a。此時,a里面存儲的一定是a和b中的較小值。再比較a和c,如果c比a小,則把c的值賦給a。完成這個步驟后,a中存儲的是3個數(shù)中的最小值,實現(xiàn)上述步驟的程序如下:

上述問題并不難解決,但是如果數(shù)字增多,問題就會變得非常棘手。比如數(shù)字增加到10個,需要定義a、b、c、d、e、f、g、h、i、j等10個變量,if語句也需要羅列10句。如果是100個數(shù)字呢?如果是1000個數(shù)字呢?遇到這樣的困難,歸根結(jié)底是因為數(shù)字之間沒有建立關(guān)系,所有的數(shù)字都是獨立分散存儲的。

如果換一個思路,使用數(shù)組來存儲,問題就會變得很容易處理。數(shù)組就是一種最基礎(chǔ)、最常見的數(shù)據(jù)結(jié)構(gòu)。它的特點就是,把一組相同類型的數(shù)字,按照線性方式,存儲在連續(xù)相鄰的位置上。此時所有數(shù)字都可以用一個名字來表示,比如 a,用數(shù)組下標(biāo)來區(qū)分這是數(shù)組中的第幾個元素。此時輸入可以用循環(huán),輸入完成后,假設(shè) a[0]是最小的,則依次把a[0]與后面每個元素比較,如果發(fā)現(xiàn)更小的,就賦值給a[0],這樣對于100個數(shù)字的問題,代碼如下:

不管數(shù)據(jù)規(guī)模多大,都只需要調(diào)整常量MAXN的大小即可,程序并不會變得更難寫。事實上,還可以定義一個變量 n,表示數(shù)據(jù)的個數(shù),這樣程序可以處理的數(shù)據(jù)規(guī)模就是可變的了。

通過上文的例子可以看到,在合理選用數(shù)組這個數(shù)據(jù)結(jié)構(gòu)以后,由于數(shù)據(jù)緊密組織在一起,編程更方便。數(shù)組就是一個線性數(shù)據(jù)結(jié)構(gòu),其數(shù)據(jù)元素線性排列,元素之間有前后相鄰的關(guān)系。

我們可以定義數(shù)據(jù)結(jié)構(gòu) DataStructure=(D,R)。其中,D 是數(shù)據(jù)元素的集合;R 是該集合中所有元素關(guān)系的有限集合。根據(jù)數(shù)據(jù)之間的關(guān)系,可以把數(shù)據(jù)結(jié)構(gòu)分為3種類型:線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖形結(jié)構(gòu)(見圖1.1)。本章主要介紹線性結(jié)構(gòu),簡要介紹樹形結(jié)構(gòu)。

圖1.1 線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖形結(jié)構(gòu)

主站蜘蛛池模板: 四子王旗| 灵武市| 阿拉善盟| 南京市| 常宁市| 长岛县| 砚山县| 尼玛县| 泰安市| 新竹县| 金堂县| 青铜峡市| 营山县| 自治县| 攀枝花市| 罗定市| 和田县| 潮州市| 华池县| 富裕县| 永靖县| 沈阳市| 鹤岗市| 电白县| 玛曲县| 韶山市| 富锦市| 公主岭市| 逊克县| 綦江县| 马山县| 吉林市| 平南县| 涟水县| 长宁县| 绥宁县| 永登县| 东台市| 织金县| 涟源市| 沙湾县|