米明高
【摘 要】数据结构作为一门研究程序设计问题的学科为学习计算机的人员提供很好的理论基础,但是由于它比较抽象,学习起来并不容易,因此编写相应的教学软件是很必要的,我们可以用VC++6.0开发环境来实现。现在采用Win32应用程序风格来介绍一个简单实用的数据结构教学软件,在这个应用程序中实现了线性表、字符串、矩阵、排序等基本数据结构的属性描述及算法演示。
【关键词】VC++6.0;线性表;字符串;矩阵;排序;数据结构;设计
实现算法演示的思路是利用两个字窗口分别作为动态演示区和演示程序区。在实现过程中,为了避免多窗口造成混乱,每产生一个窗口就将其句柄用一个全局变量描述;在算法演示区需要采用动态图形从而比较形象地演示算法的运行过程,其方法是标当前执行语句,另外用一个布尔变量的变化来标识用户发出的中断要求。
删除结點算法状态如下:
1.程序入口的设计分析
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[]=“微机室”; //窗口标题
//窗口类的定义
2.消息处理函数
在窗口登记时,将窗口处理消息的函数设置为:
wndclass.lpfnWndProc=WndProc;
WndProc函数的定义为:
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
3.排序对话框的设计
排序对话框的功能是检查算法选择和序列设置,调用不同的对话框,如下图:
4.排序过程的设计
排序过程是根据排序设置选择相应的排序算法,主要实现的函数如下:
long FAR PASCAL PXProc( )
{
char sz[255];
char sz0[255];
char *sz1=“直接插入排序动态演示”;
char *sz2=“折半插入排序动态演示”;
char *sz3=“表插入排序动态演示”;
char *sz4=“快速排序动态演示”;
char *sz5=“归并排序动态演示”;
char *sz6=“直接插入排序程序演示”;
char *sz7=“折半插入排序程序演示”;
char *sz8=“表插入排序程序演示”;
char *9=“快速排序程序演示”;
char *10=“归并排序程序演示”;
排序算法的演示是整个应用程序的核心,但实现并不复杂,只要对接收到的消息作出正确判断,并合理控制绘制句柄,必要的情况下,需要将一些子任务模块化,由更供低一级的子函数实现,我们就可以看到图形和语句像我们希望的那样在窗口上活动起来。
这里介绍的win32应用程序功能并不复杂,但从它的实现上我们可以进一步掌握窗口的设计、登记、创建和显示的实现过程;另外还可以清楚地认识到消息处理在win32应用程序中的显著地位。在此例中可以根据需要自定义消息,并通过消息处理函数来完成不同的功能。
当然,在灵活使用消息的同时,也发现管理消息定义和消息响应工作是相当复杂的,只有对整个应用有清楚、全面的认识,才能够自如地处理消息,否则整个应用程序将产生无数的执行错误,而且由于消息处理的特殊性,使其调试难度更大。
【参考文献】
[1]黄维通编著.面向对象与可视化程序设计.北京:清华大学出版社,2000
[2]潘爱民等译.Visual C++技术内幕(第四版).北京:清华大学出版社,1998
[3]钱能编著.C++程序设计教程.北京:清华大学出版社,1999