米明高
【摘 要】數(shù)據(jù)結(jié)構(gòu)作為一門研究程序設(shè)計問題的學(xué)科為學(xué)習(xí)計算機(jī)的人員提供很好的理論基礎(chǔ),但是由于它比較抽象,學(xué)習(xí)起來并不容易,因此編寫相應(yīng)的教學(xué)軟件是很必要的,我們可以用VC++6.0開發(fā)環(huán)境來實現(xiàn)?,F(xiàn)在采用Win32應(yīng)用程序風(fēng)格來介紹一個簡單實用的數(shù)據(jù)結(jié)構(gòu)教學(xué)軟件,在這個應(yīng)用程序中實現(xiàn)了線性表、字符串、矩陣、排序等基本數(shù)據(jù)結(jié)構(gòu)的屬性描述及算法演示。
【關(guān)鍵詞】VC++6.0;線性表;字符串;矩陣;排序;數(shù)據(jù)結(jié)構(gòu);設(shè)計
實現(xiàn)算法演示的思路是利用兩個字窗口分別作為動態(tài)演示區(qū)和演示程序區(qū)。在實現(xiàn)過程中,為了避免多窗口造成混亂,每產(chǎn)生一個窗口就將其句柄用一個全局變量描述;在算法演示區(qū)需要采用動態(tài)圖形從而比較形象地演示算法的運行過程,其方法是標(biāo)當(dāng)前執(zhí)行語句,另外用一個布爾變量的變化來標(biāo)識用戶發(fā)出的中斷要求。
刪除結(jié)點算法狀態(tài)如下:
1.程序入口的設(shè)計分析
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
MSG Msg;
WNDCLASS wndclass; //窗口類
mm=::LoadMenu(hInstance,“mjc”);
//menu=::LoadMenu(hInstance,“mmg”);
HACCEL hAccel;
hInst=hInstance;
tt=nShowCmd;
char lpszClassName[]=“潼南一中”; //窗口類名
char lpszTitle[]=“微機(jī)室”; //窗口標(biāo)題
//窗口類的定義
2.消息處理函數(shù)
在窗口登記時,將窗口處理消息的函數(shù)設(shè)置為:
wndclass.lpfnWndProc=WndProc;
WndProc函數(shù)的定義為:
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
3.排序?qū)υ捒虻脑O(shè)計
排序?qū)υ捒虻墓δ苁菣z查算法選擇和序列設(shè)置,調(diào)用不同的對話框,如下圖:
4.排序過程的設(shè)計
排序過程是根據(jù)排序設(shè)置選擇相應(yīng)的排序算法,主要實現(xiàn)的函數(shù)如下:
long FAR PASCAL PXProc( )
{
char sz[255];
char sz0[255];
char *sz1=“直接插入排序動態(tài)演示”;
char *sz2=“折半插入排序動態(tài)演示”;
char *sz3=“表插入排序動態(tài)演示”;
char *sz4=“快速排序動態(tài)演示”;
char *sz5=“歸并排序動態(tài)演示”;
char *sz6=“直接插入排序程序演示”;
char *sz7=“折半插入排序程序演示”;
char *sz8=“表插入排序程序演示”;
char *9=“快速排序程序演示”;
char *10=“歸并排序程序演示”;
排序算法的演示是整個應(yīng)用程序的核心,但實現(xiàn)并不復(fù)雜,只要對接收到的消息作出正確判斷,并合理控制繪制句柄,必要的情況下,需要將一些子任務(wù)模塊化,由更供低一級的子函數(shù)實現(xiàn),我們就可以看到圖形和語句像我們希望的那樣在窗口上活動起來。
這里介紹的win32應(yīng)用程序功能并不復(fù)雜,但從它的實現(xiàn)上我們可以進(jìn)一步掌握窗口的設(shè)計、登記、創(chuàng)建和顯示的實現(xiàn)過程;另外還可以清楚地認(rèn)識到消息處理在win32應(yīng)用程序中的顯著地位。在此例中可以根據(jù)需要自定義消息,并通過消息處理函數(shù)來完成不同的功能。
當(dāng)然,在靈活使用消息的同時,也發(fā)現(xiàn)管理消息定義和消息響應(yīng)工作是相當(dāng)復(fù)雜的,只有對整個應(yīng)用有清楚、全面的認(rèn)識,才能夠自如地處理消息,否則整個應(yīng)用程序?qū)a(chǎn)生無數(shù)的執(zhí)行錯誤,而且由于消息處理的特殊性,使其調(diào)試難度更大。
【參考文獻(xiàn)】
[1]黃維通編著.面向?qū)ο笈c可視化程序設(shè)計.北京:清華大學(xué)出版社,2000
[2]潘愛民等譯.Visual C++技術(shù)內(nèi)幕(第四版).北京:清華大學(xué)出版社,1998
[3]錢能編著.C++程序設(shè)計教程.北京:清華大學(xué)出版社,1999