APP下载

基于VC++的动态教学演示软件的设计与实现

2010-08-15王艳君

科技传播 2010年19期
关键词:单链链表指针

王艳君

西安欧亚学院信息工程学院计算机应用与网络教研室,陕西西安 710065

基于VC++的动态教学演示软件的设计与实现

王艳君

西安欧亚学院信息工程学院计算机应用与网络教研室,陕西西安 710065

该动态演示系统利用VC++开发平台,设计了数据结构课程的顺序表的存储结构、顺序表的操作过程、单链表的存储结构、单链表的操作过程、入栈、出栈的过程、入队列、出队列的过程、串的操作过程、二叉树的遍历过程、图的遍历过程、最小生成树的产生过程、排序过程、查找过程等内容的教学演示软件。本文主要对前插法建立单链表、从单链表中删除数据、向单链表中插入数据的算法和设计进行了说明。

教学软件;单链表;动态演示

计算机辅助教学软件开发和运用,使教学媒体有了质的飞跃,使教学手段更加丰富,对教学效果的提高起到促进作用。因此,其在教学上的运用十分有利于学生的发展,更符合现代化教学规律的要求。数据结构课程是计算机学科的一门核心课程,它比较抽象,尤其初学者对数据在内存中是如何存储的,数据在计算机中是何处理的,都不是很明确,那么开发一个数据结构演示系统是为了给学生提供形象生动、内容丰富、直观具体、感染力强的感性认识材料,使学生不再凭空想象,难题无须多讲,“百闻不如一见”。教学软件的开发对教师来说也可以大大减少工作时间,对学生来说可以按照自己的进度学习,有利于调动其学习积极性,有利于培养学生的思维能力及解决问题的能力。

本教学软件是基于VC++6.0设计一个数据结构课程的动态演示系统,包括描述顺序表的存储结构的概念,顺序表的操作过程,描述单链表存储结构的概念,单链表的操作过程,入栈、出栈的过程,入队列、出队列的过程,串的操作过程,串的模式匹配过程,二叉树的遍历过程,图的遍历过程,最小生成树算法的演示过程,排序算法的演示过程,查找算法的演示过程。

现就针对单链表的部分教学内容的动态演示的设计过程予以说明。

单链表存储结构的功能是描述单链表的存储结构、单链表的表示方法、单链表的存储结构示意图。采用消息响应函数OnLinkertablestruct()实现。

1 前插法建立单链表的动态演示

其功能是动态演示用户输入的数据串序列建立单链表的过程。单链表的创建算法是首先创建头指针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参数是指定折线顶点数组中的顶点数。

2 向单链表中插入数据演示

其功能是动态演示在单链表中插入一个数据元素的全过程。由用户输入一串单链表数据,输入一个插入位置,输入一个想要插入的数据元素,该系统会自动将要插入位置的指针断开,将要插入的数据元素插入到链表中。体现了两种算法:

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()实现功能。

3 从单链表中删除数据演示

其功能是用户输入要删除的位置,系统就会将要删除位置的结点从链表中去掉。由两种算法体现:

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

猜你喜欢

单链链表指针
逐步添加法制备单链环状DNA的影响因素探究*
基于二进制链表的粗糙集属性约简
跟麦咭学编程
基于链表多分支路径树的云存储数据完整性验证机制
为什么表的指针都按照顺时针方向转动
盐酸克伦特罗生物素化单链抗体在大肠埃希氏菌中的表达
急性淋巴细胞白血病单链抗体(scFv)的筛选与鉴定
基于改进Hough变换和BP网络的指针仪表识别
DNA处理蛋白A在细菌自然转化中的作用
链表方式集中器抄表的设计