本書核心內容為順序存儲與鏈式存儲,強調函數(shù)的重要性,包括示例的函數(shù)給出、棧在遞歸函數(shù)的應用等。本書包括基礎理論(1-2章),基礎應用(3-7章),常規(guī)應用(第8-9章),經(jīng)典算法分析(10章)4部分,實現(xiàn)了從理論到實踐的過渡,適合應用型本科學生作為教材使用,緊扣學時安排教學內容。本書適合計算機科學與技術、軟件工程、信息管理與信息系統(tǒng)等專業(yè)應用型本科學生學習使用。
將本門課程多年的教學經(jīng)驗總結歸納成書,是編者的初衷。
作為計算機類相關專業(yè)學生的專業(yè)基礎課程,算法與數(shù)據(jù)結構具有較長遠的開設歷史,同類教材也非常多,本書知識體系及內容撰寫具有以下一些特色。
(1)知識結構符合當前對該課程的主流認知。
(2)針對當前大學生編程普及,但對計算機工作原理卻比較薄弱這一特點,內容編寫中強調了順序存儲與鏈式存儲,以加強同學們對內存管理及計算機工作原理的了解。
(3)強調函數(shù)的重要性,包括示例的函數(shù)的講解、棧在遞歸函數(shù)的應用等,以加強模塊化設計的理念。
(4)重視整本書的內在邏輯性,從文字組織及示例設置上,隱性地分為四個部分:基礎理論(第1~2章),基礎應用(第3~7章),常規(guī)應用(第8~9章),經(jīng)典算法分析(第10章)。既體現(xiàn)教材由理論到實踐的遞進,也保證72(56 16)課時左右的緊湊完整。
作為應用型本科專業(yè)基礎教材,創(chuàng)新并不是一個主要的追求目標。本書基于多年教學經(jīng)驗,在匯集出本課程的一些重點和難點基礎上,針對不同內容設計解析過程,除了文字描述外,還包括圖示分析、示例演算、表格總結等,力求將問題講清講透。其中,KMP算法,二叉樹線索下的前驅后繼的查找,圖的遍歷,圖的最短路徑、關鍵路徑等內容的講解,都不同于一般教材直接給出對應的公式或解決方案,而是從思維的習慣性出發(fā),采用樸實的舉例或說理,希望更加有助于同學們的理解。諸如此類的嘗試,雖然在教學中實踐多次,但作為一本正式出版教材中的內容,我們依然謹慎處理,首先由編寫老師共同分析,再請學生參照其他教材閱讀比較,給出心得體會和改進意見。對每一章結尾的小結,給出具有啟發(fā)意義的觀點,即使未經(jīng)證實但在沒有證偽的情況下,也呈現(xiàn)給廣大師生,以提高其深究、探索的興趣。
全書采用C語言實現(xiàn)函數(shù),方便一般高校培養(yǎng)計劃的順利實施,同時,因為C語言對底層的操作能力要求及非封裝特性,可以更為全面地刻畫出數(shù)據(jù)結構與算法的一些關鍵問題,以幫助學生對計算機編程有更深刻的理解。
由于我們一直采用由唐善策等主編的《算法與數(shù)據(jù)結構用C語言描述》,所以在本次編寫過程中,參照了該教材部分內容,在此特別申明并表示感謝。其他參考文獻,已列于書后,在此對相關作者一并表示感謝。
本書的1~9章內容作為本課程的傳統(tǒng)知識體系應該課內講授,其中一些較難的章節(jié),例如,約瑟夫問題、迷宮問題等,可以考慮選講。最后1章,可以僅選擇一兩個算法進行講解。
本書由金陵科技學院李廣水、錢海忠兩位老師任主編,廣東省科學技術情報研究所何靜從應用實踐方面、昆士蘭科技大學Fuguo Wei從軟件工程國際合作培養(yǎng)角度提出編寫意見,對教材的整體結構及內容組織給予了極大的幫助,任本書副主編,李廣水進行全書統(tǒng)稿工作。
真心感謝電子工業(yè)出版社李靜編輯的悉心審稿,她認真的工作態(tài)度、執(zhí)著的精神,真實地感動了我們,也提高了我們對本書質量保證方面的信心。
即便如此,由于知識及能力的有限,疏漏及不足之處依然難免,懇請廣大讀者朋友給出批評建議,在此表示衷心感謝!
作者郵箱:yz_lgs@126.com
編 者
2017年6月
李廣水,南京林業(yè)大學森林經(jīng)理博士,教授,金陵科技學院軟件工程學院教師,多次獲得江蘇省高等教育學會、教育科學研究院、校級教學成果獎,在軟件工程專業(yè)從事十幾年的教學工作,教學嚴謹,科研認真,主持江蘇省多項科研教學項目。