数据结构教学中培养学生思维能力的教学范例

2016-05-26 00:25董思妤
考试周刊 2016年27期
关键词:数据结构教学实践思维能力

董思妤

摘 要: 《数据结构》是一门比较抽象、理论性强、难度较大又极其重要的课程,通过高效、优质的课堂提问,对于学员逻辑思维能力和创造力的培养有非常重要的作用。本文从教学实践出发,通过具体教学实例,探讨如何提高学员的思维能力。

关键词: 《数据结构》 思维能力 优质提问教学法 教学实践 教学方法

引言

《数据结构》是武警初级指挥生长干部四年制“学历教育合训”本科学员指挥信息系统工程专业的专业基础必修课。对学员信息素质的培养、信息系统的开发等技能具有一定的指导作用,训练学员分析和解决问题的能力,使学员了解数据结构在解决现实问题中的重要应用,培养学员探索精神,提高学员综合素质,实现知识、能力与素质协调发展,为培养具有较强创新能力的高素质新型军事人才奠定基础。

1.优质提问教学法

课堂提问是教学中的一个重要环节,通过提问,可以提高学员注意力,激发学员积极思考,使课堂气氛变得活跃,进而提高学员的学习兴趣;通过提问,可促使学员对已学知识进行回顾,对未学的知识进行探索,并将各知识点串联起来,形成更完整、更具体的知识体系[1]。为了提高学员的思维能力,培养学员解决问题的能力,教员在授课时就要有意识地引导学员思考,通过教员的引导使学员形成自己的思维过程。因此,教员应掌握一定的课堂提问技巧,因为不合理的提问反而会影响教学效果。

优质提问教学法指教员一定要科学设问。提出的问题需要掌握一定的技巧,问题要设置在关键之处,如在回顾旧知识引入新课及重要知识点之间的衔接时,都可以设问。课堂设问的难易程度要适中,以能激发学员的学习兴趣为前提。教员在设置问题时,应循序渐进,通过问题的层层深入,让学员掌握理解问题本质的思维方法,使学员分析问题的能力得以提高。

2.教学范例:线性表的单链式存储结构

“线性表的单链式存储结构”教学内容安排在“线性表的顺序存储结构(包含特殊线性表栈和队列)”之后[2],首先回顾线性表的顺序存储结构,用类比法引入新课。将在座每一位同学类比为数据元素,将教室每一个座位类比为计算机的存储单元,前面学习的顺序存储方式就好比每一位同学按学号依次就座,座位是固定的,而今天要学习的链式存储结构,可不按顺序就座,只要有空位就可以坐,让每一位同学记住学号在你后面的下一位同学的位置即可。单链表只能单方向查找,就好比我们经常看的谍战片,你只知道你的下线,却永远不知道你的上线是谁。从生活中的事例引入,很快就让学员明白了,而不会觉得很抽象。回到数据结构中,链式存储将每一个数据元素看做一个结点,每一个结点的存储单元不需要是连续的,每一个结点中存放它后继结点的地址。第一个结点的地址通过头结点获取,之后每一个结点都可以通过它的前驱结点找到。

这时,提出第一个问题:(1)在一个已知结点之前插入删除数据容易呢?还是在已知结点之后插入删除数据容易?这时学员就会思考如果已知结点p,那么p的后继结点地址可轻松地通过p->next获取,如果在p结点后插入结点s的话很容易,只需要s->next=p->next;p->next=s;重新链接一下指针就可以了,时间复杂度为O(1)。而p的前驱结点能不能直接获取到呢?由前面所学的知识学员很快就明白了,不行,只能通过头指针L依次从头结点开始获取,q=L->next;while(q->next!=p)q=q->next;此时q指向的结点就是p的前驱结点,查找结点的时间复杂度为O(n),再通过q->next=s;s->next=p,就可以成功地在p结点前插入结点s了。而删除操作亦然。引导学员分析完后,学员在认真思考下,很快就能给出答案:当然是在已知结点之后插入删除数据容易了。

掌握了这部分知识点之后,接着抛出第二个问题:(2)对于栈这种操作受限的线性表,它只能在一端进行插入和删除,它的链式存储结构—链栈,结点的插入和删除操作应该放在链首还是链尾?教员再引导学员通过前面所学的知识思考:如果在链首操作,就应该是在头结点之后插入和删除,而头结点的地址容易获取吗?显而易见,通过头指针可以直接获取到,时间复杂度为O(1),这就转化为第一个问题中的已知结点(头结点L->next)之后插入和删除的问题。而若在链尾操作,插入结点需要获取最后一个结点的地址,删除最后一个结点需要获取倒数第二个结点的地址,这些都需要从头指针处开始查找,时间复杂度为O(n)。这时学员很快就能给出答案:对于链栈,结点的插入和删除操作应该放在链首。并且引导学员依照第一个问题写出程序代码。

对于链栈的操作大家明白了,请思考最后一个问题:(3)对于队列这种操作受限的线性表,它只能在一端进行插入另一端进行删除,它的链式存储结构—链队列,结点的插入和删除操作应该放在链首还是链尾呢?首先要让学员明白链队列的头指针与链栈的不同,是一结构体,其中Q.front始终指向头结点,Q.rear始终指向尾结点,如图1。

若在链首删除链尾插入,则引导学员分析,学员通过前面所学知识,很容易就能写出实现代码。

链首删除(出队):p=Q.front->next;Q.front->next=p->next;free(p);考虑当只剩下一个结点删除后队列为空的情况:if(Q.rear==p);Q.rear=Q.front;free(p);时间复杂度为O(1);

链尾插入(入队):Q.rear->next=S;Q.rear=S;时间复杂度为O(1)。

反过来,若在链首插入链尾删除,则让学员自己分析。

链首插入(入队):与链栈操作相同。S->next=Q.front->next;Q.front->next=S;时间复杂度为O(1)。

链尾删除(出队):即是要删除Q.rear指向的结点,删除后Q.rear指向前驱结点。让学员思考该怎么做,Q.rear的前驱结点地址如何获取?这时学员马上就会想到只能从Q.front处开始查找获取,时间复杂度为O(n)。随后让学员自己写出实现代码。

最后,学员给出答案:链队列出队在链首,入队在链尾比较好。

以上这三个问题是将不同章节的知识点串联起来,对授课内容进行重组,所提出的问题环环相扣,由易到难、循序渐进。不仅让学员有效掌握了对链式存储结构操作的相关知识,而且启发了学员的思维,调动了学员学习的积极性,锻炼了学员的逻辑思维和独立思考问题的能力。

3.结语

本文通过具体教学案例,探讨了以教员充分引导和启发学员思维相结合为主要特征的优质提问教学法。通过构建“问题链”,创设问题情境,恰当地呈现问题,激发学员的兴趣,激发学员参与解决问题的欲望,调动他们主动探索问题的积极性,对学员思维能力的培养起到重要作用,对教员课堂教学质量的提高也起到积极作用。

参考文献:

[1]严太山,郭观七,李文彬.课堂设问的技巧及其在《数据结构》课程教学中的应用[J].湖南理工学院学报(自然科学版),2015(3):81-83.

[2]严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社,2007.

猜你喜欢
数据结构教学实践思维能力
培养思维能力
培养思维能力
中职计算机应用课程教学改革与反思
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
高职高专数据结构教学改革探讨
TRIZ理论在“数据结构”多媒体教学中的应用
《数据结构》教学方法创新探讨