目錄
0 前言
1、同學們心中的疑問
①這門課程是講什麼的?
②這門課重要嗎?
③這門課好學嗎?
④怎麼才能學好這門課?
2、課程內容
憑藉一句話獲得圖靈獎的Pascal語言之父——Nicklaus Wirth,讓他獲得圖靈獎的這句話就是他提出的著名公式:“程序=數據結構+算法”。
這個公式對計算機科學的影響程度足以類似物理學中愛因斯坦的“E=MC^2”。——一個公式展示出了程序的本質。
3、數據結構這門課重要嗎?
①數據結構是這計算機軟件相關專業的專業基礎課。
②在教學計劃中的地位:核心、承上啓下的課程。
③數據結構是介於數學、計算機硬件和計算機軟件三者之間的一門核心課程。
④類似於武術中的“練功”科目:“練武不練功,到頭一場空”。
⑤考研:必考專業課,四門專業課,共150分,《數據結構和算法》佔45分(更有很多學校只考數據結構和算法)。
⑥找工作:面試時最主要考覈的內容。
4、這門課好學嗎?
有點難。
①概念性強、抽象。
②算法靈活、不易掌握。
③邏輯性強,算法設計很燒腦。
5、怎麼才能學好這門課程呢?
勤于思考;多做練習;多上機;善於尋求幫助;不怕困難,不放棄!!!
1.1 數據結構的研究內容
1、計算機解題步驟
通常,用計算機解題一個問題的步驟:
①具體問題抽象爲數學模型。
實質:分析問題;提取操作對象;找出操作對象之間的關係;用數學語言描述→數據結構。
②設計算法。
③編程、調試、運行。
2、數值計算
早期,計算機主要用於數值計算。
(1)例1
例1,求解樑架結構中的應力。
數學模型:。
線性方程組:。
(2)例2
例2,預報人口增長情況。
數學模型:微分方程(;;)。
首先,分析問題、提取操作對象。然後,找出操作對象之間的關係,用數學語言加以描述,建立相應數學方程。最後,求解數學方程:高斯消元法、有限元法、差分法……
特點:數據元素間的關係簡單,計算複雜。
3、非數值計算
隨着計算機應用領域的擴展,計算機被越來越多地用於非數值計算。
(1)例1
例1,學生學籍管理系統。
表1.1 學生基本信息表 | ||||
學號 | 姓名 | 性別 | 籍貫 | 專業 |
60214201 | 楊陽 | 男 | 安徽 | 計算機科學與技術 |
60214202 | 薛林 | 男 | 福建 | 計算機科學與技術 |
60214215 | 王詩萌 | 女 | 吉林 | 計算機科學與技術 |
60214216 | 馮子晗 | 女 | 山東 | 計算機科學與技術 |
操作對象:每位學生的信息(學號、姓名、性別、籍貫、專業……)。
操作算法:查詢、插入、修改、刪除等。
操作對象之間的關係:線性關係。
數據結構:線性數據結構、線性表。
類似的還有圖書管理系統、人事管理系統、倉庫管理系統、通訊錄……
操作對象:若干行數據記錄。
操作算法:查詢、插入、修改、刪除等。
操作對象之間的關係:線性關係。
數據結構:線性數據結構、線性表。
(2)例2
例2,人機對弈問題。
之所以能對弈:策略已經輸入計算機,可以根據當前棋盤格局,來預測棋局發展的趨勢,甚至最後結局。
計算機的操作對象:各種棋局狀態,即描述棋盤的格局信息。
計算機的算法:走棋,即選擇一種策略使棋局狀態發生變化(由一種格局派生出另一個格局)。
操作對象之間的關係:非線性關係、樹。
(3)文件系統的系統結構圖
磁盤根目錄下有很多子目錄及文件,每個子目錄裏又可以包含多個子目錄及文件,但每個子目錄只有一個父目錄,依此類推。
本問題是一種典型的樹型結構問題,數據與數據成一對多的關係,是一種典型的非線性關係結構——樹形結構。
(4)地理信息處理
例3,地圖導航——求最短路徑(最快路徑)。
問題:找出圖中兩點之間的最短路徑或最經濟路徑。
操作對象:各地點及路的信息。
計算機算法:設置信號燈,求出各個可同時通行的路的集合。
對象之間的關係:非線性關係、網狀結構。
4、小結
綜上所述:
①這些問題的共性是都無法用數學的公式或方程來描述,是一些“非數值計算”的程序設計問題。
②描述非數值計算問題的數學模型不是數學方程,而是諸如表、樹和圖之類的具有邏輯關係的數據。
③數據結構是一門研究非數值計算的程序設計中計算機的操作對象以及它們之間的關係和操作的學科。
要想有效地使用計算機,就必須學習數據結構。