"數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型"這兩個(gè)概念的個(gè)人理解
Posted on 2006-06-02 14:04 hays(海納百川) 閱讀(937) 評(píng)論(1) 編輯 收藏????? ?嚴(yán)蔚敏編著的<< 數(shù)據(jù)結(jié)構(gòu)>>,.算起來這本書我也看了快3到4遍了.自我感覺還可以,最起碼基本上了解了什么是線性表,棧,隊(duì)列,樹....也能自己上機(jī)用C實(shí)現(xiàn)."數(shù)據(jù)結(jié)構(gòu),什么是數(shù)據(jù)結(jié)構(gòu)" 這樣一個(gè)問題出現(xiàn)了,我感覺挺模糊的,花了幾個(gè)小時(shí)來看了下,有了點(diǎn)想法,寫下來讓大家看看.
????? 自從開始學(xué)習(xí)編寫程序,我就很清楚記的書上的一句話"程序=數(shù)據(jù)結(jié)構(gòu)+算法".(呵呵,常用這句話在同學(xué)面前裝高深,還是有很多人不知道地).編程我覺的就是一個(gè)從現(xiàn)實(shí)到模擬的一個(gè)過程.首先從具體的問題抽象出一個(gè)數(shù)學(xué)模型,然后設(shè)計(jì)一個(gè)解決這個(gè)問題的算法,最后編出程序.當(dāng)然了在現(xiàn)實(shí)生活中有很多不可能用數(shù)學(xué)模型來描述的,數(shù)據(jù)結(jié)構(gòu)就是為了研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中計(jì)算機(jī)的操作對(duì)象以及他們之間的關(guān)系和操作等等..
??????<<數(shù)據(jù)結(jié)構(gòu)>>-嚴(yán) 中對(duì)數(shù)據(jù)結(jié)構(gòu)的定義是:相互之間存在一中或多種特定關(guān)系的數(shù)據(jù)元素的集合; 數(shù)據(jù)元素都不是孤立存在的,而是在他們之間存在某些關(guān)系的.感覺挺抽象的,都是數(shù)學(xué)描述。我的個(gè)人理解是吧,數(shù)據(jù)結(jié)構(gòu)就是用來存放有特定關(guān)系的數(shù)據(jù)的容器,就象一些特定的瓶子,里邊必須放一類東西,比如:一個(gè)瓶子放糖果,一個(gè)放水果.當(dāng)然了,我這種說法有些不恰當(dāng).
???? 討論數(shù)據(jù)結(jié)構(gòu)的目的是為了在計(jì)算機(jī)中實(shí)現(xiàn)對(duì)它進(jìn)行操作.數(shù)據(jù)類型就是對(duì)數(shù)據(jù)結(jié)構(gòu)的操作(個(gè)人觀點(diǎn)),我門編程的時(shí)候老是說到什么int數(shù)據(jù)類型,char型...好象并沒有看到這些類型有什么操作,其實(shí)不是的..加,.減,乘,除,其實(shí)就是定義在int類型上的一組操作.?這里我就想問了.那么我們編程時(shí)說的Queue到底是數(shù)據(jù)結(jié)構(gòu)還是數(shù)據(jù)類型呢.從定義的角度來看,Queue有對(duì)數(shù)據(jù)的操作,應(yīng)該是數(shù)據(jù)類型.??那么口頭說的'隊(duì)列'應(yīng)該是數(shù)據(jù)結(jié)構(gòu),為什么呢?就拿'"銀行排隊(duì)取錢"這個(gè)問題來說,我們說要用'隊(duì)列'來實(shí)現(xiàn),我們要的只是一種對(duì)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)(也就是說人應(yīng)該排在隊(duì)列里,而不用管他怎么排),這種存儲(chǔ)結(jié)構(gòu)(隊(duì)列)有一種特性就是先進(jìn)先出,(至于它的這種特怎么實(shí)現(xiàn)我們不用管).
??????數(shù)據(jù)類型就是指一個(gè)數(shù)學(xué)模型以及定義在該模型上的一組操作,那類是不是數(shù)據(jù)類型呢?類包括他的成員變量和成員方法,而方法是對(duì)成變量的操作,所以說類應(yīng)該是一種數(shù)據(jù)類型.但是類有自身的創(chuàng)建和銷毀,這點(diǎn)符合(ADT)抽象數(shù)據(jù)類型的特點(diǎn).面向?qū)ο笥袀€(gè)重要的特點(diǎn)就是對(duì)信息的隱藏(即封裝),那么數(shù)據(jù)類型有沒有這樣的特點(diǎn)了,應(yīng)該是有的.就拿整型來說吧,用戶在使用整數(shù)類型時(shí),即不需要了解他在計(jì)算機(jī)內(nèi)部怎么表示的,也不需要知道怎么操作的,如"兩整數(shù)相加",我們只需要知道的僅僅是他在"數(shù)學(xué)上求和"這樣一個(gè)抽象的特性,而不要考慮他是怎么在硬件內(nèi)部怎么進(jìn)行"位"運(yùn)算的.
?????????個(gè)人的理解,肯定有很多是不妥的,呵呵!!
??????
????? 自從開始學(xué)習(xí)編寫程序,我就很清楚記的書上的一句話"程序=數(shù)據(jù)結(jié)構(gòu)+算法".(呵呵,常用這句話在同學(xué)面前裝高深,還是有很多人不知道地).編程我覺的就是一個(gè)從現(xiàn)實(shí)到模擬的一個(gè)過程.首先從具體的問題抽象出一個(gè)數(shù)學(xué)模型,然后設(shè)計(jì)一個(gè)解決這個(gè)問題的算法,最后編出程序.當(dāng)然了在現(xiàn)實(shí)生活中有很多不可能用數(shù)學(xué)模型來描述的,數(shù)據(jù)結(jié)構(gòu)就是為了研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中計(jì)算機(jī)的操作對(duì)象以及他們之間的關(guān)系和操作等等..
??????<<數(shù)據(jù)結(jié)構(gòu)>>-嚴(yán) 中對(duì)數(shù)據(jù)結(jié)構(gòu)的定義是:相互之間存在一中或多種特定關(guān)系的數(shù)據(jù)元素的集合; 數(shù)據(jù)元素都不是孤立存在的,而是在他們之間存在某些關(guān)系的.感覺挺抽象的,都是數(shù)學(xué)描述。我的個(gè)人理解是吧,數(shù)據(jù)結(jié)構(gòu)就是用來存放有特定關(guān)系的數(shù)據(jù)的容器,就象一些特定的瓶子,里邊必須放一類東西,比如:一個(gè)瓶子放糖果,一個(gè)放水果.當(dāng)然了,我這種說法有些不恰當(dāng).
???? 討論數(shù)據(jù)結(jié)構(gòu)的目的是為了在計(jì)算機(jī)中實(shí)現(xiàn)對(duì)它進(jìn)行操作.數(shù)據(jù)類型就是對(duì)數(shù)據(jù)結(jié)構(gòu)的操作(個(gè)人觀點(diǎn)),我門編程的時(shí)候老是說到什么int數(shù)據(jù)類型,char型...好象并沒有看到這些類型有什么操作,其實(shí)不是的..加,.減,乘,除,其實(shí)就是定義在int類型上的一組操作.?這里我就想問了.那么我們編程時(shí)說的Queue到底是數(shù)據(jù)結(jié)構(gòu)還是數(shù)據(jù)類型呢.從定義的角度來看,Queue有對(duì)數(shù)據(jù)的操作,應(yīng)該是數(shù)據(jù)類型.??那么口頭說的'隊(duì)列'應(yīng)該是數(shù)據(jù)結(jié)構(gòu),為什么呢?就拿'"銀行排隊(duì)取錢"這個(gè)問題來說,我們說要用'隊(duì)列'來實(shí)現(xiàn),我們要的只是一種對(duì)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)(也就是說人應(yīng)該排在隊(duì)列里,而不用管他怎么排),這種存儲(chǔ)結(jié)構(gòu)(隊(duì)列)有一種特性就是先進(jìn)先出,(至于它的這種特怎么實(shí)現(xiàn)我們不用管).
??????數(shù)據(jù)類型就是指一個(gè)數(shù)學(xué)模型以及定義在該模型上的一組操作,那類是不是數(shù)據(jù)類型呢?類包括他的成員變量和成員方法,而方法是對(duì)成變量的操作,所以說類應(yīng)該是一種數(shù)據(jù)類型.但是類有自身的創(chuàng)建和銷毀,這點(diǎn)符合(ADT)抽象數(shù)據(jù)類型的特點(diǎn).面向?qū)ο笥袀€(gè)重要的特點(diǎn)就是對(duì)信息的隱藏(即封裝),那么數(shù)據(jù)類型有沒有這樣的特點(diǎn)了,應(yīng)該是有的.就拿整型來說吧,用戶在使用整數(shù)類型時(shí),即不需要了解他在計(jì)算機(jī)內(nèi)部怎么表示的,也不需要知道怎么操作的,如"兩整數(shù)相加",我們只需要知道的僅僅是他在"數(shù)學(xué)上求和"這樣一個(gè)抽象的特性,而不要考慮他是怎么在硬件內(nèi)部怎么進(jìn)行"位"運(yùn)算的.
?????????個(gè)人的理解,肯定有很多是不妥的,呵呵!!
??????