《資料結構與演算法》實驗指導書

2022-06-03 23:00:09 字數 4972 閱讀 9696

鬱松軟體學院

《資料結構》是計算機、資訊管理和電子商務專業一門重要的專業技術基礎課程,是計算機、資訊管理和電子商務專業的一門關鍵性課程。本課程較系統地介紹了軟體設計中常用的資料結構以及相應的儲存結構和實現演算法,介紹了常用的多種查詢和排序技術,並做了一些效能分析和比較,內容非常豐富。本課程的學習將為後續課程的學習以及軟體設計水平的提高打下良好的基礎。

《資料結構》課程內容豐富,學習量大,給學習帶來一定的困難;所用到的技術多,而在此之前的各門課程中所介紹的專業性知識又不多,因而加大了學習難度;隱含在各部分的技術和方法豐富,也是學習的重點和難點。根據《資料結構》課程本身的技術特性,設定《資料結構課程實驗》實踐環節十分重要。通過實驗實踐內容的訓練,突出學生程式思維訓練和動手上機除錯程式的能力,目的是提高學生組織資料及編寫大型程式的能力

使學生不僅能夠深化理解教學內容,進一步提高靈活運用資料結構、演算法和程式設計技術的能力,而且可以在總是分析、總體結構設計、演算法設計、程式設計、上機操作及程式除錯等基本技能方面受到綜合訓練。實驗著眼於原理與應用的結合點,使學生學會如何把書本上和課堂上學到的知識用於解決實際問題,從而培養計算機軟體工作所需要的動手能力。

不少學生在解答習題尤其是演算法設計題時,覺得無從下手,做起來特別費勁。實驗中的內容和教科書的內容是密切相關的,解決題目要求所需的各種技術大多可從教科書中找到,只不過其出現的形式呈多樣化,因此需要仔細體會,在反覆實踐的過程中才能掌握。

為了幫助學生更好地學習本課程,理解和掌握演算法設計所需的技術,為整個專業學習打好基礎,要求運用所學知識,上機解決一些典型問題,通過分析、設計、編碼、除錯等各環節的訓練,使學生深刻理解、牢固掌握所用到的一些技術。資料結構中稍微複雜一些的演算法設計中可能同時要用到多種技術和方法,如演算法設計的構思方法,動態鍊錶,演算法的編碼,遞迴技術,與特定問題相關的技術等,要求重點掌握線性鍊錶、二叉樹和樹、圖結構、陣列結構相關演算法的設計。在掌握基本演算法的基礎上,掌握分析、解決實際問題的能力。

1、閱讀實驗指導書

每一次實驗從閱讀實驗指導書開始。對於本次實驗的實驗目的、實驗題目、實現提示以及思考題目、選做題目等應認真了解。

2、演算法設計

分析實驗題目,參考實現提示,進行演算法設計。

3、程式設計

根據已完成的演算法,用c語言進行程式設計。

4、除錯和測試

將所程式設計序在計算機上除錯通過,並選取若干組測試資料對程式進行盡可能全面的測試。

5、整理完成實驗報告

實驗報告一般包括下列內容:

實驗者姓名、學號、專業和班級,課程名稱(資料結構課程設計),實驗日期等;

本交實驗的實驗編號及實驗名稱(例如:實驗一線性表的應用)

本次實驗的實驗目的;

本次實驗的實驗地點、裝置編號、硬體及軟體環境;

程式結構的描述及各模組的規格說明;

主要演算法及其基本思想;

除錯過程簡述(除錯過程是否順利,遇到些什麼問題,如何解決的,以及上機操作所花費的時間等);

測試資料和相應輸出的客觀紀錄,對執行結果的分析討論。

多**微型計算機pentium iv 1ghz以上,256mb ram以上;windows 2000,win xp,turbo c或visual c++6.0。

採用上機情況、程式質量、實驗報告相結合的形式,

隨著計算機效能的提高,它所面臨的軟體開發的複雜度也日趨增加,因此軟體開發需要系統的方法。一種常用的軟體開發方法,是將軟體開發過程分為分析、設計、實現和維護四個階段。雖然資料結構課程中的實習題的複雜度遠不如實際中真正的軟體系統,但為了培養乙個軟體工作者所應具備的科學工作的方法和作風,我們制訂了如下所述完成實習的5個步驟:

1、問題分析和任務定義

通常,實驗題目的陳述比較簡潔,或者說有模稜兩可的含義。因此,在進行設計之前,首先應該充分地分析和理解問題,明確問題要求做什麼,限制條件是什麼。注意:

本步驟強調的是做什麼,而不是怎麼做。對問題的描述應避開演算法和所涉及的資料型別,而是對所需完成的任務作出明確的回答。例如:

輸入資料的型別、值的範圍以及輸入的形式;輸出資料的型別、值的範圍及輸出的形式;若是會話式的輸入,則結束標誌是什麼,是否接受非法的輸入,對非法輸入的回答方式是什麼等等。這一步還應該為除錯程式準備好測試資料,包括合法的輸入資料和非法形式輸入的資料。

2、資料型別和系統設計

在設計這一步驟中需分邏輯設計和詳細設計兩步實現。邏輯設計指的是,對問題描述中涉及的操作物件定義相應的資料型別,並按照以資料結構為中心的原則劃分模組,定義主程式模組和各抽象資料型別。詳細設計則為定義相應的儲存結構並寫出各過程和函式的偽碼演算法。

在這個過程中,要綜合考慮系統功能,使得系統結構清晰、合理、簡單和易於除錯,抽象資料型別的實現盡可能做到資料封裝,基本操作的規格說明盡可能明確具體。作為邏輯設計的結果,應寫出每個抽象資料型別的定義(包括資料結構的描述和每個基本操作的規格說明),各個主要模組的演算法,並畫出模組之間的呼叫關係圖。詳細設汁的結果是對資料結構和基本操作的規格說明作出進一步的求精,寫出資料儲存結構的型別定義,按照演算法書寫規範用類c語言寫出過程或函式形式的演算法框架。

在求精的過程中,應盡量避免陷入語言細節,不必過早表述輔助資料結構和區域性變數。

3、編碼實現和靜態檢查

編碼是把詳細設計的結果進一步求精為程式語言程式。如何編寫程式才能較快地完成除錯是特別要注意的問題。程式的每行不要超過60個字元。

每個過程(函式)體一般不要超過40行,最長不得超過60行,否則應該分割成較小的過程(函式)。要控制if語句連續巢狀的深度,分支過多時應考慮使用switch語句。對函式功能和重要變數進行注釋。

一定要按格式書寫程式,分清每條語句的層次,對齊括號,這樣便於發現語法錯誤。

在上機之前,應該用筆在紙上寫出詳細的程式編碼,並做認真地靜態檢查。多數初學者在編好程式後處於以下兩種狀態之一:一種是對自己的「精心作品」的正確性確信不疑;另一種是認為上機前的任務已經完成,糾查錯誤是上機的工作。

這兩種態度是極為有害的。對一般的程式設計者而言,當編寫的程式長度超過50行時,通常會含有語法錯誤或邏輯錯誤。上機動態除錯決不能代替靜態檢查,否則除錯效率將是極低的。

靜態檢查主要有兩種方法,一是用一組測試資料手工執行程式(通常應先檢查單個模組);二是通過閱讀或給別人講解自己的程式而深入全面地理解程式邏輯,在這個過程中再加入一些註解。

4.上機準備和上機除錯

上機準備包括以下幾個方面:

熟悉c語言使用者手冊或程式設計指導書。

注意turbo c、vc與標準c語言之間的細微差別。

熟悉機器的作業系統和語言整合環境的使用者手冊,尤其是最常用的命令操作,以便順利進行上機的基本活動。

掌握除錯工具,考慮除錯方案,設計測試資料並手工得出正確結果。「磨刀不誤砍柴工」。學生應該熟練運用高階語言的程式偵錯程式debug除錯程式。

上機除錯程式時要帶一本高階語言教材或手冊。除錯最好分模組進行,自底向上,即先除錯低層過程或函式。必要時可以另寫乙個呼叫驅動程式。

這種表面上麻煩的工作實際上可以大大降低除錯所面臨的複雜性,提高除錯工作效率。

在除錯過程中可以不斷借助debug的各種功能,提高除錯效率。除錯中遇到的各種異常現象往往是預料不到的,此時不應「苦思冥想」,而應借助系統提供的除錯工具確定錯誤。除錯正確後,認真整理源程式及其注釋,印出帶有完整注釋的且格式良好的源程式清單和結果。

5、總結和整理實驗報告

實習報告的開頭應給出題目、班級、姓名、學號和完成日期,幷包括以下7個內容:

1.需求分析

以無歧義的陳述說明程式設計的任務,強調的是程式要做什麼?並明確規定:

輸入的形式和輸入值的範圍;

(輸出的形式;

(程式所能達到的功能;

(測試資料:包括正確的輸入及其輸出結果和含有錯誤的輸入及其輸出結果。

2.概要設計

說明本程式中用到的所有抽象資料型別的定義、主程式的流程以及各程式模組之間的層次(呼叫)關係。

3.詳細設計

實現概要設計中定義的所有資料型別,對每個操作只需要寫出偽碼演算法;對主程式和其他模組也都需要寫出偽碼演算法(偽碼演算法達到的詳細程度建議為:按照偽碼演算法可以在計算機鍵盤直接輸入高階程式語言程式);畫出函式和過程的呼叫關係圖。

4.除錯分析

內容包括:

除錯過程中遇到的問題是如何解決的以及對設計與實現的回顧討論和分析;

演算法的時空分析(包括基本操作和其他演算法的時間複雜度和空間複雜度的分析)和改進設想;經驗和體會等。

5.使用者使用說明

說明如何使用你編寫的程式,詳細列出每一步的操作步驟。

6.測試結果

列出你的測試結果,包括輸入和輸出。這裡的測試資料應該完整和嚴格,最好多於需求分析中所列。

7.附錄

帶注釋的源程式**。

值得注意的是,實習報告的各種文件資料,如:上述中的前三部分要在程式開發的過程中逐漸充實形成,而不是最後補寫。

另附:實驗報告封面

中南大學

《資料結構與演算法》課程實驗

實驗報告

題目學生姓名

學生學號

專業班級

一、實驗目的

1、掌握線性表的基本操作,插入、刪除、查詢,以及線性表合併等運算在順序儲存結構和鏈結儲存結構上的運算。

2、熟練運用掌握的線性表的操作,實現一元n次多項式的加法運算

二、實驗內容

順序儲存的線性表有一些弱點,其一,插入與刪除元素需要大量移動元素;其二,預先分配儲存空間時必須按最大的空間來分配。其三,表長難以擴充。

鏈式儲存結構的特點是用一組任意的儲存單元儲存線性鍊錶的資料元素,與順序表的區別在於鏈式儲存的儲存單元可以是連續的,也可以是不連續的。為了實現這種結構,鍊錶採取由兩部分資訊組成資料元素ai的儲存映像,稱為結點。結點包括兩個域,其中儲存資料資訊的域稱為資料域,儲存直接後繼資訊的稱為指標域。

指標域中儲存的資訊叫做指標或鏈。這樣,n個結點鏈結成乙個鍊錶,即為線性表(a1,a2,a3,,an)。

符號多項式的操作,已經成為表處理的典型用例,在數學上,乙個一元多項式pn(x)可以按公升冪寫成:pn(x)=p0+p1x+p2(x的2次冪)++pn(x的n次冪),也可以按照降冪來排列。它由n+1個係數唯一確定。

因此,在計算機裡,它可用乙個線性表p來表示:p=(p0,p1,p2,,pn),顯然,在通常的應用中,多項式的次數變化很高且很大,此種表示將造成記憶體的很大浪費。所以在實際應用中通常只記錄多項式的係數非零的項,也就是係數非零項的次數和對應的非零係數。

《資料結構 演算法與應用》實驗指導書

山東大學軟體學院 一 實驗要求 1 採用良好的程式設計風格 關鍵操作要有注釋。2 程式能夠執行,顯示執行結果。二 開發工具 microsoft visual c eclipse ide for c 三 實驗時間 地點 一 實驗目的 1 熟悉開發工具的使用。2 掌握遞迴的實現思想。二 實驗內容 1 輸...

資料結構與演算法大平台實驗指導書

上海交通大學電院資料結構大平台課程組 目錄1.關於實習步驟的要求和建議 2.上機實習 實習一線性結構 實習二樹和二叉樹 實習三查詢 實習四圖 實習五排序 3.實習報告樣例 1 關於實習步驟的要求和建議 從以往的教學事先實習的經驗來看,在初學階段執行嚴格的實習步驟規範 包括上機操作規範 機時利用率會大...

《資料結構與演算法》實驗指導書2019版

大連民族學院 資訊與通訊工程學院 2013 年10 月10 日 基本要求 1.學生必須按時到實驗室做實驗,不得遲到早退,未經老師批准不得中途離開。凡遲到者,應給予批評並作適當扣分。實驗課遲到20分鐘以上及無故缺席者視為曠課,曠課者不予補做實驗,本次實驗以零分計。學生因病或特殊情況不能按時到實驗室做實...