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