如封清揚老師說的那樣:
If you give someone a program,you will frustrate them for a day枚赡;if you teach them how to program,you will frustrate them for a lifetime.
而我,顯然已經(jīng)成為被折磨一輩子的人,在編碼的道路上越走越遠(yuǎn)。但是蒋得,不得不說,我喜歡這樣的工作,喜歡代碼帶來的挑戰(zhàn)!接下來掌实,就一起開始“數(shù)據(jù)結(jié)構(gòu)”之路吧!邦马!
一贱鼻、基本概念和術(shù)語
1.數(shù)據(jù):
是描述客觀事物的符號,是計算機中可以操作的對象滋将,是能被計算機識別邻悬,并輸入給計算機處理的符號集合。數(shù)據(jù)不僅僅包括整型随闽、實型等數(shù)值類型父丰,還包括字符以及聲音、圖像掘宪、視頻等非數(shù)值類型蛾扇。
2.數(shù)據(jù)元素:
是組成數(shù)據(jù)的、有一定意義的基本單位魏滚,在計算機中通常作為整體處理镀首。也被稱為記錄。
例如:在人類中鼠次,人是數(shù)據(jù)元素更哄;在畜類中,牛腥寇、馬成翩、羊等是數(shù)據(jù)元素。
3.數(shù)據(jù)項:
一個數(shù)據(jù)元素可以由若干個數(shù)據(jù)項組成赦役。比如人這個數(shù)據(jù)元素麻敌,可以有眼、耳扩劝、鼻子庸论、手、腳等這些數(shù)據(jù)項棒呛。
數(shù)據(jù)項是數(shù)據(jù)不可分割的最小單位聂示。
4.數(shù)據(jù)對象
是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的子集簇秒。
5.數(shù)據(jù)結(jié)構(gòu)
是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合鱼喉。
二、邏輯結(jié)構(gòu)與物理結(jié)構(gòu)
1.邏輯結(jié)構(gòu)
邏輯結(jié)構(gòu)是指數(shù)據(jù)對象中數(shù)據(jù)元素之間的相互關(guān)系。
(1)集合結(jié)構(gòu)
集合結(jié)構(gòu)中的數(shù)據(jù)元素除了同屬于一個集合外扛禽,它們之間沒有其他關(guān)系锋边。各個數(shù)據(jù)元素是“平等”的,它們的共同屬性是“同屬于一個集合”编曼。數(shù)據(jù)結(jié)構(gòu)中的集合關(guān)系類似于數(shù)學(xué)中的集合豆巨。
(2)線性結(jié)構(gòu)
線性結(jié)構(gòu)中的數(shù)據(jù)元素之間是一對一的關(guān)系。
(3)樹形結(jié)構(gòu)
樹形結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一種一對多的層次關(guān)系掐场。
(4)圖形結(jié)構(gòu)
圖形結(jié)構(gòu)的數(shù)據(jù)元素是多對多的關(guān)系往扔。
2.物理結(jié)構(gòu)
物理結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的存儲形式。
(1)順序存儲結(jié)構(gòu)
順序存儲結(jié)構(gòu)是把數(shù)據(jù)元素存放在地址連續(xù)的存儲單元里熊户,其數(shù)據(jù)間的邏輯關(guān)系和物理關(guān)系是一致的萍膛。
(2)鏈?zhǔn)酱鎯Y(jié)構(gòu)
鏈?zhǔn)酱鎯Y(jié)構(gòu)是把數(shù)據(jù)元素存放在任意的存儲單元里,這組存儲單元可以是連續(xù)的嚷堡,也可以是不連續(xù)的蝗罗。數(shù)據(jù)元素的存儲關(guān)系并不能反映其邏輯關(guān)系,因此需要用一個指針存放數(shù)據(jù)元素的地址蝌戒,這樣通過地址就可以找到相關(guān)聯(lián)數(shù)據(jù)元素的位置串塑。
三、抽象數(shù)據(jù)類型
1.數(shù)據(jù)類型
數(shù)據(jù)類型是指一組性質(zhì)相同的值的集合及定義在此集合上的一些操作的總稱北苟。在c語言中拟赊,按照取值的不同,數(shù)據(jù)類型可以分為兩類:
(1)原子類型:是不可以再分解的基本類型粹淋,包括整型、實型瑟慈、字符型等桃移。
(2)結(jié)構(gòu)類型:由若干個類型組合而成,是可以再分解的葛碧。例如借杰,整型數(shù)組是由若干整型數(shù)據(jù)組成的。
2.抽象數(shù)據(jù)類型
抽象數(shù)據(jù)類型是指一個數(shù)學(xué)模型以及定義在該模型上的一組操作进泼。事實上蔗衡,抽象數(shù)據(jù)類型體現(xiàn)了程序設(shè)計中問題分解、抽象和信息隱藏的特性乳绕。
抽象數(shù)據(jù)類型把實際生活中的問題分解為多個規(guī)模小且容易處理的問題绞惦,然后建立一個計算機能處理的數(shù)據(jù)模型,并把每個功能模塊的實現(xiàn)細(xì)節(jié)作為一個獨立的單元洋措,從而使具體實現(xiàn)過程隱藏起來济蝉。