我們稱數(shù)據(jù)結(jié)構(gòu)是計算機科學(xué)中的一門專業(yè)基礎(chǔ)課,但它又有著不同于其他一些基礎(chǔ)課的特點,在于它有很強的綜合性,不僅僅涉及計算機軟件研究,包括操作系統(tǒng),編譯程序等,還與計算機硬件有著相當(dāng)大的關(guān)系,從編碼理論到數(shù)據(jù)存儲都離不開數(shù)據(jù)結(jié)構(gòu)。因此可以說,數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計算機硬件和計算機軟件三者之間的一門核心課程。所以《數(shù)據(jù)結(jié)構(gòu)》這門課程對于學(xué)好計算機應(yīng)用專業(yè)的其他后續(xù)課程起著非常關(guān)鍵的作用。但是由于課程內(nèi)容繁多,許多內(nèi)容有著相當(dāng)?shù)碾y度。所以學(xué)好它并不是一件很容易的事情。所以一個好的學(xué)習(xí)方法就顯得尤其重要。判斷一個學(xué)習(xí)方法好壞的標(biāo)準(zhǔn)關(guān)鍵看這種學(xué)習(xí)方法是否適合于自己。
大家在學(xué)習(xí)這么課程的過程中,應(yīng)該不斷吸收、總結(jié)、歸納,結(jié)合自己的特點,找出一種對自己來說行之有效的學(xué)習(xí)方法,這樣學(xué)習(xí)起來就可以達(dá)到事半功倍。本文是依據(jù)《數(shù)據(jù)結(jié)構(gòu)》課程自身的特點已經(jīng)以往的一些教學(xué)經(jīng)驗,總結(jié)、歸納得出一些學(xué)習(xí)方法上的建議和重點和難點分析,希望能給廣大學(xué)員帶來啟發(fā),從來使大家讀完之后,能夠使自己的學(xué)習(xí)更加行之有效。下面我們來逐步給大家講解:
學(xué)習(xí)本課程的一些方法上的建議
1.因為本課程的算法是用類C語言來描述的(算法的基本概念我們將在下面的內(nèi)容介紹)。類C語言是一種偽語言,其語法與C語言在很大程度上是相似的。所以我們需要掌握C語言和類C語言是學(xué)好數(shù)據(jù)結(jié)構(gòu)的先決條件,所以事先應(yīng)該對C語言和類C語言有所了解。
2.下面我來介紹一下本課程的基本內(nèi)容:
數(shù)據(jù)結(jié)構(gòu)這門課程主要有以下幾個內(nèi)容:
(1)線形結(jié)構(gòu)——包括線形表、棧、隊列和數(shù)組等內(nèi)容
(2)非線形結(jié)構(gòu)——包括樹、圖等內(nèi)容
(3)排序
(4)查找
這些內(nèi)容基本上概括了整個數(shù)據(jù)結(jié)構(gòu)課程的基本內(nèi)容。學(xué)員們在學(xué)習(xí)的過程中,要注意比較它們之間的聯(lián)系和不同點,需要指出的是查找和排序是日常工作中經(jīng)常遇到的操作,因此在數(shù)據(jù)結(jié)構(gòu)中我們也專門的章節(jié)給學(xué)員們加以介紹。
3.我們要了解一下整個數(shù)據(jù)結(jié)構(gòu)課程講述的基本步驟,這樣我們就可以知道該如何學(xué)習(xí)書中的每一種數(shù)據(jù)結(jié)構(gòu):
(1)邏輯結(jié)構(gòu)——其特點是它獨立與計算機的硬件結(jié)構(gòu)的一種抽象的數(shù)學(xué)拓?fù)浣Y(jié)構(gòu)
(2)基本運算——即定義在某種邏輯結(jié)構(gòu)上的具體操作。每一種邏輯結(jié)構(gòu)都對應(yīng)于一個運算的集合。在這里我們僅僅需要考慮的是每種運算的功能,即只關(guān)心它“做什么”,而不考慮如何去實現(xiàn)它。
(3)存儲結(jié)構(gòu)——也就是邏輯結(jié)構(gòu)在計算機中的具體實現(xiàn),它是一個依賴與計算機硬件的結(jié)構(gòu)。
(4)運算實現(xiàn)——運算只有和具體的存儲結(jié)構(gòu)相結(jié)合,才能夠得到實現(xiàn),因此它所關(guān)心的問題就是如何去實現(xiàn)某種具體的運算,即讓我們知道該“怎么做”。
(5)算法評價——每一種運算實現(xiàn)的不同方法,所對應(yīng)的時間性能、空間性能都是不同。所以我們需要從這兩個角度來考慮和評價我們所選擇的運算實現(xiàn)方法的好壞。
以上所列舉的幾項是每一種數(shù)據(jù)結(jié)構(gòu)都需要講述的,而且每一種數(shù)據(jù)結(jié)構(gòu)的這五個方面都是密切聯(lián)系的,而且不同數(shù)據(jù)結(jié)構(gòu)在某一特定方面也有著相互之間的聯(lián)系。所以我們在學(xué)習(xí)的過程中,要逐步學(xué)會一一加一比較,加以歸納、總結(jié),從而找出它們之間的相同點和不同點。這樣有助于加深對整個課程的理解,并且在腦海中逐步形成一個完整的體系。
4.提高解題能力的佳途徑是首先理解教材中介紹的各個算法,這些算法大多數(shù)都是經(jīng)典的。同學(xué)學(xué)習(xí)和理會這些算法的含義和具體實現(xiàn)過程,我們可以歸納總結(jié)出一些良好的基本解題思路、方法和技巧。
大家在學(xué)習(xí)這么課程的過程中,應(yīng)該不斷吸收、總結(jié)、歸納,結(jié)合自己的特點,找出一種對自己來說行之有效的學(xué)習(xí)方法,這樣學(xué)習(xí)起來就可以達(dá)到事半功倍。本文是依據(jù)《數(shù)據(jù)結(jié)構(gòu)》課程自身的特點已經(jīng)以往的一些教學(xué)經(jīng)驗,總結(jié)、歸納得出一些學(xué)習(xí)方法上的建議和重點和難點分析,希望能給廣大學(xué)員帶來啟發(fā),從來使大家讀完之后,能夠使自己的學(xué)習(xí)更加行之有效。下面我們來逐步給大家講解:
學(xué)習(xí)本課程的一些方法上的建議
1.因為本課程的算法是用類C語言來描述的(算法的基本概念我們將在下面的內(nèi)容介紹)。類C語言是一種偽語言,其語法與C語言在很大程度上是相似的。所以我們需要掌握C語言和類C語言是學(xué)好數(shù)據(jù)結(jié)構(gòu)的先決條件,所以事先應(yīng)該對C語言和類C語言有所了解。
2.下面我來介紹一下本課程的基本內(nèi)容:
數(shù)據(jù)結(jié)構(gòu)這門課程主要有以下幾個內(nèi)容:
(1)線形結(jié)構(gòu)——包括線形表、棧、隊列和數(shù)組等內(nèi)容
(2)非線形結(jié)構(gòu)——包括樹、圖等內(nèi)容
(3)排序
(4)查找
這些內(nèi)容基本上概括了整個數(shù)據(jù)結(jié)構(gòu)課程的基本內(nèi)容。學(xué)員們在學(xué)習(xí)的過程中,要注意比較它們之間的聯(lián)系和不同點,需要指出的是查找和排序是日常工作中經(jīng)常遇到的操作,因此在數(shù)據(jù)結(jié)構(gòu)中我們也專門的章節(jié)給學(xué)員們加以介紹。
3.我們要了解一下整個數(shù)據(jù)結(jié)構(gòu)課程講述的基本步驟,這樣我們就可以知道該如何學(xué)習(xí)書中的每一種數(shù)據(jù)結(jié)構(gòu):
(1)邏輯結(jié)構(gòu)——其特點是它獨立與計算機的硬件結(jié)構(gòu)的一種抽象的數(shù)學(xué)拓?fù)浣Y(jié)構(gòu)
(2)基本運算——即定義在某種邏輯結(jié)構(gòu)上的具體操作。每一種邏輯結(jié)構(gòu)都對應(yīng)于一個運算的集合。在這里我們僅僅需要考慮的是每種運算的功能,即只關(guān)心它“做什么”,而不考慮如何去實現(xiàn)它。
(3)存儲結(jié)構(gòu)——也就是邏輯結(jié)構(gòu)在計算機中的具體實現(xiàn),它是一個依賴與計算機硬件的結(jié)構(gòu)。
(4)運算實現(xiàn)——運算只有和具體的存儲結(jié)構(gòu)相結(jié)合,才能夠得到實現(xiàn),因此它所關(guān)心的問題就是如何去實現(xiàn)某種具體的運算,即讓我們知道該“怎么做”。
(5)算法評價——每一種運算實現(xiàn)的不同方法,所對應(yīng)的時間性能、空間性能都是不同。所以我們需要從這兩個角度來考慮和評價我們所選擇的運算實現(xiàn)方法的好壞。
以上所列舉的幾項是每一種數(shù)據(jù)結(jié)構(gòu)都需要講述的,而且每一種數(shù)據(jù)結(jié)構(gòu)的這五個方面都是密切聯(lián)系的,而且不同數(shù)據(jù)結(jié)構(gòu)在某一特定方面也有著相互之間的聯(lián)系。所以我們在學(xué)習(xí)的過程中,要逐步學(xué)會一一加一比較,加以歸納、總結(jié),從而找出它們之間的相同點和不同點。這樣有助于加深對整個課程的理解,并且在腦海中逐步形成一個完整的體系。
4.提高解題能力的佳途徑是首先理解教材中介紹的各個算法,這些算法大多數(shù)都是經(jīng)典的。同學(xué)學(xué)習(xí)和理會這些算法的含義和具體實現(xiàn)過程,我們可以歸納總結(jié)出一些良好的基本解題思路、方法和技巧。