王艷君
西安歐亞學院信息工程學院計算機應用與網絡教研室,陜西西安 710065
基于VC++的動態教學演示軟件的設計與實現
王艷君
西安歐亞學院信息工程學院計算機應用與網絡教研室,陜西西安 710065
該動態演示系統利用VC++開發平臺,設計了數據結構課程的順序表的存儲結構、順序表的操作過程、單鏈表的存儲結構、單鏈表的操作過程、入棧、出棧的過程、入隊列、出隊列的過程、串的操作過程、二叉樹的遍歷過程、圖的遍歷過程、最小生成樹的產生過程、排序過程、查找過程等內容的教學演示軟件。本文主要對前插法建立單鏈表、從單鏈表中刪除數據、向單鏈表中插入數據的算法和設計進行了說明。
教學軟件;單鏈表;動態演示
計算機輔助教學軟件開發和運用,使教學媒體有了質的飛躍,使教學手段更加豐富,對教學效果的提高起到促進作用。因此,其在教學上的運用十分有利于學生的發展,更符合現代化教學規律的要求。數據結構課程是計算機學科的一門核心課程,它比較抽象,尤其初學者對數據在內存中是如何存儲的,數據在計算機中是何處理的,都不是很明確,那么開發一個數據結構演示系統是為了給學生提供形象生動、內容豐富、直觀具體、感染力強的感性認識材料,使學生不再憑空想象,難題無須多講,“百聞不如一見”。教學軟件的開發對教師來說也可以大大減少工作時間,對學生來說可以按照自己的進度學習,有利于調動其學習積極性,有利于培養學生的思維能力及解決問題的能力。
本教學軟件是基于VC++6.0設計一個數據結構課程的動態演示系統,包括描述順序表的存儲結構的概念,順序表的操作過程,描述單鏈表存儲結構的概念,單鏈表的操作過程,入棧、出棧的過程,入隊列、出隊列的過程,串的操作過程,串的模式匹配過程,二叉樹的遍歷過程,圖的遍歷過程,最小生成樹算法的演示過程,排序算法的演示過程,查找算法的演示過程。
現就針對單鏈表的部分教學內容的動態演示的設計過程予以說明。
單鏈表存儲結構的功能是描述單鏈表的存儲結構、單鏈表的表示方法、單鏈表的存儲結構示意圖。采用消息響應函數OnLinkertablestruct()實現。
其功能是動態演示用戶輸入的數據串序列建立單鏈表的過程。單鏈表的創建算法是首先創建頭指針h和頭節點head,插入節點時,使掃描指針p指向插入位置的前一個結點,然后為要插入的結點開辟存儲空間,使指針q指向這個結點,將要插入的數據元素x插入到q指針指向結點的數據域(即q→date=x),將待插入數據元素位置的前一個結點的指針域賦給待插數據元素位置結點的指針域(即q→next=p→next),斷開待插位置前一結點的指針域,使其指向待插入的結點(即p→next=q)。
其繪圖算法是在x軸等于100,y軸等于100的地方繪制一個矩形,使其做為頭結點,在x軸等于等于600,y軸等于240的地方繪制一個矩形,使其做為插入的第一個結點,然后每新增加一個結點x軸坐標減130,y軸坐標不變。采用消息響應函數:OnCreatlinkertable(),實現過程是在創建鏈表過程中連接兩個結點,需要用畫線折線的函數BOOL Polyline(LPPOINT lpPoints, int nCount),這個函數用來畫一條折線。其中lpPoints參數是指向折線頂點的數組指針,nCount參數是指定折線頂點數組中的頂點數。
其功能是動態演示在單鏈表中插入一個數據元素的全過程。由用戶輸入一串單鏈表數據,輸入一個插入位置,輸入一個想要插入的數據元素,該系統會自動將要插入位置的指針斷開,將要插入的數據元素插入到鏈表中。體現了兩種算法:
1)向鏈表中插入數據元素的算法:要在帶頭節點的單鏈表數據元素ai(i大于等于0且小于鏈表的數據元素的個數)結點前插入一個存放數據元素x的結點,首先要在單鏈表中尋找到存放數據元素ai-1的結點并由指針p指示,然后動態申請一個結點存儲空間并由指針q指示,并把數據元素x的值賦予新結點的數據元素域(即q→data=x),最后修改新結點的指針域指向數據元素ai結點(q→next=p→next),并修改數據元素ai-1結點的指針域指向新結點q(即p→next=q)。
2)繪圖算法:在x軸等于50,y軸等于160的位置畫一個矩形,使其作為頭結點。以后每隔50個像素畫一個矩形做為鏈表的元素,直到矩形的個數等于鏈表數據元素的個數。待插結點的x軸坐標是以插入位置結點x軸坐標作為基準的,y軸坐標為260。
采用消息響應函數OnLinkertableinsert()實現功能。
其功能是用戶輸入要刪除的位置,系統就會將要刪除位置的結點從鏈表中去掉。由兩種算法體現:
1)從鏈表中刪除數據元素的算法:要在帶頭結點的單鏈表中刪除數據元素ai結點,首先需要在單鏈表中尋找到存放數據元素ai-1的結點并由指針p指示,然后讓指針s指向數據元素ai結點(即s=p→next)并把數據元素ai的值賦予x(即x=s→date),最后刪除數據元素ai結點(p→next=p→next→next),并動態釋放數據元素ai結點的存儲空間。
2)繪圖算法:從x軸坐標為50,y軸坐標為160的地方每隔50個像素依次繪制一個矩形,直到矩形個數等于鏈表元素個數加1,鏈表繪制完成。動態演示刪除過程時,用紅色筆畫線將待刪元素位置的前一個矩形和待刪元素位置的后一個矩形連接起來,再用白色筆畫線將原來待刪位置與前一矩形之間的連線和待刪位置與后一矩形之間的連線用白色筆重繪。
采用消息響應函數OnLinkertabledelete()實現功能。
TP31
A
1674-6708(2010)28-0224-01