计算思维和程序设计能力的培养
计算思维对程序设计能力培养的作用

摘要
现在以计算机科学为基础的信息技术的快速发展, 计算思维的作用日益凸显。计算思维的对于程序设计能 力培养的作用正在随着计算机速度的迅猛发展而被加速 地放大。为了运用创造性思维,逆向思维等计算思维方 式,加强对程序设计能力的培养,先简要地介绍了计算 思维的概念以及计算思维的现状与发展方向。接着介绍 了几种常用的程序设计语言以及程序设计的一般过程, 然后分别从整体与部分思维、逆向思维、构造性思维、 目标转化思维、猜想与假设思维等思维方式在程序设计 中的运用总结出了计算思维对于程序设计能力培养的作 用,最后给出了将计算思维融入到大学计算机程序设计 课程教学中的具体方法。这些方法的运用能够有效提高 大学生程序设计的能力。
具体将计算思维概括为以下几个方面:
(1)计算思维是一种将具体的程序设计问题的求解转化成为一系列 具有逻辑顺序的解题步骤的思维方法。 (2)计算思维是一种采用分析和概括的方法,对庞大复杂的任务或 者系统进行实施和设计,将问题进行抽象和分解,是一种逐步递进, 分层前进的思维方式。 (3)计算思维从本质上来说又是一种递归思维,它能将数据和代码 进行相互转换,即是一种能把代码翻译成数据,而数据也能翻译成 代码。 (4)计算思维是一种运用行之有效的方式理解与表征问题,可以通 过建模使问题变的更加简单,方便人们快速解决的思维方式
程序设计中常用的计算思维方式
1.整体与部分思维 (1)正确理解整体与部分的关系,准确表征问题 (2)充分利用守恒原理获得有效信息和压缩冗余信息 2.逆向思维 (1)由正及反逆向思维 (2)由果推因逆向思维 3.构造性思维(构造数学模型) 4.目标转化思维 (1)缩小目标 (2)放大目标 5.猜想与假设思维
幼儿园教育中的计算思维和问题解决能力培养

幼儿园教育中的计算思维和问题解决能力培养在幼儿园教育中,计算思维和问题解决能力培养是非常重要的,它们为幼儿的综合发展和学习打下坚实的基础。
通过培养幼儿的计算思维和问题解决能力,可以帮助他们理解数学概念、培养逻辑思维能力、提升解决问题的能力等。
在本文中,我们将探讨幼儿园如何进行计算思维和问题解决能力的培养。
一、计算思维的培养计算思维是指通过数学算法和思维方式解决问题的能力。
在幼儿园阶段,培养幼儿的计算思维是为了他们能够理解数学概念,运用算法解决简单的数学问题。
以下是一些培养幼儿计算思维的方法:1. 培养对数量的感知能力:幼儿对数量的感知是数学学习的基础。
通过数数物品、比较物品的多少等活动,可以培养幼儿对数量的感知能力。
2. 引导幼儿进行简单的数学运算:通过游戏或故事情境,引导幼儿进行简单的加减法运算。
例如,给幼儿分发苹果,让他们计算分发的苹果的总数。
3. 创设数学问题情境:通过创设各种数学问题情境,鼓励幼儿进行思考和解答。
例如,给幼儿出示一张图片,问他们图片中一共有多少个动物,让他们自己进行计算。
二、问题解决能力的培养问题解决能力是指幼儿面对问题时能够分析、思考并寻找解决方法的能力。
通过培养问题解决能力,可以培养幼儿的逻辑思维和创造性思维。
以下是一些培养幼儿问题解决能力的方法:1. 培养观察力和思维能力:通过观察和思考环境中的问题,引导幼儿提出解决问题的方法。
例如,在课堂上提问「如何用一根棍子做成一个正方形?」,引导幼儿思考并提出解决方法。
2. 激发幼儿的好奇心和求知欲:通过激发幼儿的兴趣和好奇心,鼓励他们主动提出问题,并寻找解决问题的方法。
例如,在自然探索活动中,引导幼儿提出问题,探寻答案。
3. 提供合适的挑战:在幼儿园教育中,教师可以提供一些适合幼儿年龄的问题和挑战,激发幼儿解决问题的积极性和动力。
通过以上方法的培养,幼儿在幼儿园教育中能够逐渐培养出计算思维和问题解决能力。
这些能力的培养不仅可以帮助幼儿理解数学概念,提升解决问题的能力,还能为日后的学习和生活奠定良好的基础。
如何培养小学生的计算思维能力

如何培养小学生的计算思维能力培养小学生的计算思维能力是教育中的重要任务之一。
计算思维能力的培养不仅可以提升孩子们的数学素养,还能够锻炼他们的逻辑思维和解决问题的能力。
在以下内容中,我将介绍一些有效的方法和策略,帮助家长和老师培养小学生的计算思维能力。
1. 玩具和游戏:选择适合年龄的数学玩具和游戏是培养计算思维能力的好方法。
例如,拼图、积木、数学卡片等可以帮助小学生理解数字和形状,并锻炼他们的观察力和空间思维。
2. 数学操作活动:通过数学操作活动,可以帮助小学生将抽象的数学概念与实际生活相结合。
比如,让他们通过分组和分类来理解数学中的集合概念;通过探索不同的形状和图案来培养几何思维能力。
3. 实际问题解决:将数学应用于实际问题的解决中可以培养小学生的计算思维能力。
可以设计一些与日常生活相关的问题,让他们运用数学知识进行分析和解答,例如计算购物物品的总价、找零钱的问题等。
4. 创新思维训练:鼓励小学生开展一些创新思维训练活动,例如数学游戏设计、数学谜题解析等。
这些活动可以激发孩子们的创造力和探究精神,培养他们解决问题的能力和对数学的兴趣。
5. 多媒体教学:借助多媒体教学技术,可以将抽象的数学概念通过图像、视频等形式直观地展示给小学生,提高他们的理解和记忆能力。
同时,利用电子教具和数学软件也可以增加小学生对计算思维的训练和应用。
6. 团队合作学习:组织小学生进行团队合作学习,可以培养他们的交流能力和合作意识。
在数学学习中,可以设计一些小组活动,让孩子们共同探讨和解决数学问题,借助集体智慧来提高计算思维能力。
7. 注重思维过程:在教学过程中,不仅注重结果,还要重视思维过程。
引导小学生关注解题方法和思路,培养他们的逻辑推理和问题分析能力。
通过解决各种类型的数学问题,让他们逐渐形成独立思考和自主解决问题的能力。
通过以上的方法和策略,我们可以有效地培养小学生的计算思维能力。
当然,这需要家长和老师的共同努力和耐心教导。
在Python算法与程序设计教学中落实计算思维培养

在 Python算法与程序设计教学中落实计算思维培养摘要:python算法与程序设计是八年级上册的教学内容,这一部分的内容比较抽象,学生难于理解与掌握,但对于培养学生的逻辑思维、计算思维有着重要的作用。
要明确计算思维特征,以培养学生的逻辑思维与计算思维能力为教学目标,恰当运用游戏法、任务驱动法与合作探究法教学方法,让学生经历程序设计解决问题的一般过程,提升学生解决问题的能力,实现培养计算思维目标落到实处。
关键词:初中python;算法与程序设计;计算思维;教学方法;培养。
过去旧教材,初中信息技术课程教学一般都是以“实践操作”为主,学生所收获的是“模仿”与“练习”,对培养学生的计算思维甚少,新教材八年级上册的“python算法与程序设计”课程教学内容则有助于培养学生的计算思维。
下面主要从几个方面来阐述初中《python 算法与程序设计》计算思维的培养。
一、初中新教材Python算法与程序设计课程起点和高度。
Python语言目前是一种比较流行的面向对象语言,从初中到大学都分不同深度,不同层次、不同阶段的学习。
初中python教材内容总体上要求学生掌握用自然语言、算法语言或流程图来描述算法的方法,能掌握三种程序设计结构,掌握简单的编程、调试和运行程序,解决日常生活问题,这些都是属于最基础的内容。
所以初中python教学内容的定界是体验和简单应用,而不是系统开发,也不是培养IT行业的从业者。
由于课时有限,在教学过程中尽量使用简单的代码能解决的就力求不使用教材之外复杂的函数或第三方库的方式,这样就可以避免知识面过大,这样就更好培养学生计算思维。
二、明确Python算法与程序设计课程的教学目标定位初中python语言教学的总体目标主要是通过学习“python算法与程序设计”来培养学生的逻辑思维与计算思维能力。
逻辑思维一般都是以数学推理和演译从而得出的结论,靠的是数学推理或成型的数学公式。
比如:A>B,B>C,从而可以推出A>C。
编程与计算思维:培养学生的逻辑思维与问题解决能力

编程与计算思维:培养学生的逻辑思维与问题解决能力引言编程和计算思维作为现代社会中的重要技能,不仅仅对于计算机专业人士而言,对每个人都有着重要意义。
编程能够帮助学生培养逻辑思维和问题解决能力,提高他们在各个领域中的创造力与竞争力。
本文将深入探讨编程与计算思维在学生中的作用,并探讨如何有效地培养学生的逻辑思维与问题解决能力。
编程:开启学生思维的大门1. 提高逻辑思考能力通过编程,学生需要按照一定的语法规则进行代码编写。
这要求他们分析问题、理清思路、设计合理的算法,并将其转化为可执行代码。
这个过程锻炼了学生的逻辑思考和分析能力。
2. 增强问题解决能力当遇到编程过程中出现错误或项目无法正常运行时,学生需要通过排除错误和调试来解决问题。
这倒逼他们不断寻找解决方案并进行创新性的试验,培养了他们解决问题的能力。
3. 培养创造力编程过程中,学生面临的问题并不是固定的,他们可以用不同的方式来解决相同的问题。
这激发了学生的创造力,鼓励他们设计出更优化、更高效的解决方案。
计算思维:思维模式的转变1. 抽象与模型建立计算思维要求学生将复杂问题进行抽象和建模。
通过将问题简化为可处理和理解的形式,学生能够更好地理解问题本质,并找到有效解决方案。
2. 分析与分解计算思维强调对复杂问题进行分析和分解。
通过将大问题拆分成小问题,并逐个击破,学生能够更加系统地分析和解决复杂难题。
3. 迭代与反馈计算思维注重迭代和反馈。
学生通过试验、修改、测试等过程来不断完善自己的方案,并根据实际结果进行调整。
这让他们不断优化和改进自己的思考方式。
如何有效培养学生的逻辑思维与问题解决能力?1. 引入编程教育将编程教育融入学校课程中,提供基础的编程知识和技能培训。
通过逐步学习,培养学生的编程兴趣和技能。
2. 强调项目驱动学习让学生通过参与实际项目,从中体验问题解决的过程。
这种实践性的学习方法可以帮助学生更好地理解编程与计算思维的实际应用。
3. 提供团队合作机会鼓励学生在团队中合作,共同解决复杂问题。
程序设计基础课程中计算思维能力的培养

关键词 :计算思维 ; 程序设计基础 ; 算法
Tr i fCo p i a n o m utng Thi ng i Pr g a sg ur e nki n o r m De i n Co s s
Ab t a t h a e r f n r d c s t e c n e t n h rc e i i so o u i g t i k n . a e n t e a ay i ft e sr c :T e p p r b e y i to u e h o c ps a d c a a t r tc fc mp t n i g b s d o h n l ss o h il s n h i t n i r lt n h p b t e r ga d sg nr sc ea i s i ewe n p o r m e in ̄u d t n c u s sa d c mp t g t i k n . d a x mp e t x lr o o i o n ai o r e n o u i h n ig An n e a l o e p o e h w t o n c mbn h e c ig o r g a d sg n o u i g t i k n ,t e c s o u e n t e k o e g a g ti h e c i g o i e t e ta h n fp o r m e in a d c mp t h n i g h a e fc s s o h n wld e tu h n te ta h n n p o e s i i l o i t d c h a i o c p sa d w y o o u i g t i kn , n c iv d s me r s l . rc s , n a t me y t r u e t e b sc c n e t n a fc mp t n i g a d a h e e o e u t n o n h s
分析计算机程序设计课程中计算思维能力的培养

一、计算思维的内涵 计算思维的概念最早是在 2006年由美国卡内基梅隆大学 周以真教授在“ACM”通信中提出的。周教授认为:计算思维是 运用计算机科学的基本概念来分析解决问题、进行系统设计、 以及理解人类行为和其他活动,它涵盖了计算机科学的思维广 度。计算思维主要是通过在时间和空间上运用大量的数据来 加速计算,它可以被设计在内存和外存中使用。计算思维可以 通过学习探索如何同步时间来避免“竞争条件”的情况。计算 机科学在我们的日常生活中扮演着重要的角色,不仅如此,人 们还常用计算机科学来解决日常生活中遇到的各种问题,改善 我们的生活习惯,以及与他人沟通的方式方法。 二、计算机程序设计课程中计算思维能力的培养策略 (一)整合教学内容,突出计算思维能力培养针对性 在计算机程序设计课程教学实践中,要想重点对学生的计
和具体的项目任务,创建一个相应的堆 H[0..n1],然后将堆 首(最大值)和堆尾互换,逐步缩小堆的尺寸,同时应用 shift_ down(0),将新生成的数组顶端数据调整到合理的位置,再次将 堆首(最大值)和堆尾互换,重复这个过程,直到堆的尺寸缩小 为 1,完成项目任务。
在学生逐步完成项目任务的过程中,能对计算机程序方面 “堆排序算法”的应用形成更加深刻的认识,学生的计算思维能 力也能得到良好的锻炼,并且在项目活动中,学生能掌握应用 计算机程序设计方会明显的提升,还能在真实模拟情境中帮助学生提高职 业适应力,有助于增强学生的计算思维能力。
科技风 2020年 4月
科教论坛 DOI:10.19392/j.cnki.16717341.202011058
分析计算机程序设计课程中计算思维能力的培养
吴凤侠
辽宁省凌源市职业教育中心 辽宁凌源 122500
程序设计教学中培养计算思维能力的路径与方法

程序设计教学中培养计算思维能力的路径与方法计算思维是指将问题抽象成计算模型和算法,利用计算机系统进行计算和推理,最终得出问题解决方案的思维方式和方法。
在当前信息科技快速发展的背景下,计算思维能力已经成为人们所需要掌握的一种基本技能,而计算思维能力的培养也成为了现代教育和各个行业的重要任务之一。
在程序设计教学中培养计算思维能力,可以通过以下路径与方法实现。
1.注重启发性教学计算思维能力的核心在于问题抽象和算法设计,同时也要求学生具备良好的逻辑推理能力和创造力。
在程序设计教学中,教师应该注重启发性教学,引导学生从实际问题中抽象出计算模型,激发学生的计算思维。
例如,可以提供一些案例或者实际场景,要求学生进行抽象和建模,并设计相应的算法实现解决方案。
通过这种方法,可以让学生掌握计算思维的基本技能,理解计算思维的本质和实践价值。
2.强调实践技能训练计算思维能力的培养需要良好的实践技能作为支撑。
在程序设计教学中,教师应该注重实践技能的培养,例如,要求学生掌握一门计算机语言,掌握基本的程序设计技能,并能够熟练地使用计算机系统进行程序编写和调试。
同时,教师也应该注重计算机系统的原理、操作系统的基本知识和网络协议的掌握,帮助学生深入地理解计算机系统的运行和应用。
3.多元化教学策略计算思维能力的培养需要多元化的教学策略和方法。
在程序设计教学中,教师应该采用多元化的教学策略和方法,例如,讲解、演示、实践、互动等,以满足学生的不同需求和学习风格。
同时,应该鼓励学生自己进行课外学习和实践,并通过问题解决和反思来巩固和拓展计算思维能力。
4.注重创新和应用综上所述,计算思维能力的培养是程序设计教学中重要的任务之一。
通过启发性教学、实践技能训练、多元化教学策略和注重创新和应用等方法,可以有效地培养学生的计算思维能力,提高学生的创新能力和应用能力,为未来的职业发展奠定基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算思维和程序设计能力的培养摘要:随着信息化技术的发展加快,如何提高计算机人才的程序设计和开发能力显得尤为重要。
本文从算法的一题多解入手,探讨对学生计算思维能力的培养。
这一方法对培养学生学习兴趣和提高其程序设计及编程实践能力起到了极大的促进作用。
采用这个方法进行教学,能达到理想的教学效果。
关键词:算法;程序设计;计算思维;能力培养1研究背景数据结构是计算机相关专业的一门重要的专业基础课,是计算机科学的核心课程,是计算机理论与技术的重要基石。
它主要研究计算机加工对象的逻辑结构、在计算机中的表示形式以及实现各种基本操作的算法。
它是学习操作系统、编译原理、数据库原理、软件工程等计算机专业核心课程的基础,掌握好这门课程的内容,是学习计算机其他相关课程的必备条件。
学习数据结构可以培养学生的数据抽象能力、算法设计能力以及构造算法思维方法的能力。
数据结构的学习过程,是算法构造性思维方法的训练过程,技能培养的重要程度不亚于知识传授。
本门课程教学难点在于让学生理解、习惯算法构造思维方法。
培养学生的数据抽象能力、算法设计能力以及创造性思维方法,才能使其举一反三、触类旁通,从而达到应用知识解决复杂问题的目的。
通过数据结构的学习,培养和强化学生计算思维的能力。
程序设计在计算机学科知识体系中处于核心地位,对计算机专业的学生来说不仅是职业技能的培养,也体现着创造性思维的信息素质培养过程。
程序设计也是有形表达抽象思维的方法,在程序设计过程中贯穿阅读判断、分析思考、工具利用、抽象表达、综合创造等多项技能,对计算机专业人才素质的培养至关重要[1]。
如何培养学生的程序设计和计算思维能力,是我们在教学中思考的一个问题,我们将这一教学理念融入数据结构的教学中,取得了理想的效果。
2数据结构教学面临的困境我们根据实际应用需要,对数据进行有效地组织、存储和处理,并设计出相应的高效率的算法,这是数据结构课程所要研究和解决的问题。
由于数据结构具有抽象性和灵活性等特点,这给教学和学习带来一定的困难[2]。
学生学习起来比较吃力,有学生反映,他们课上听懂了,但是一下来做作业,就会不知道如何下手。
有部分学生感觉对学习数据结构缺乏兴趣,他们不知道数据结构能用在什么地方、到底有没有用。
3培养学生计算思维能力的重要性很多专家、学者、教授针对学生学不好的问题进行了积极的讨论和研究。
大部分人都认为,在如今的社会背景下,应该首先引导学生,培养学生的兴趣,从而培养他们分析问题、解决问题的能力。
随着科学技术的飞速发展,计算机的发展进步也非常迅速,新的知识大约每两年就成长一倍,学生大一所学的新知识,到大三可能就已过时。
那么,我们到底要给学生些什么呢?2010 年最迫切需要的十种工作,在2000年时可能根本还不存在。
因此,我们面临的挑战是要教学生面对目前还不存在的工作,使用现在还没有发明的科技。
不管我们的课程怎么设置,重点是要教会他们进入社会后能够解决没有想过,甚至没发生过的新问题。
在这个概念下,关心到学生真正的需要,如何从“学什么”(内容)转到“如何学”(过程)[3]。
不管环境、知识需求如何变化,有了良好的计算思维品质,就可以以不变应万变。
关键是看有没有这个思维,对这个问题是如何思考,有没有想法,有没有解决问题的办法。
所以,我们必须加强学生计算思维能力的培养。
4算法与计算思维4.1算法算法是解决问题的方法,根据图灵奖得主D.E.Knuth的定义:一个算法就是一个有穷规则的集合,其中规则规定一个解决某一特定类型问题的操作序列。
学生在学习程序设计课程时,将通过算法设计并由计算机语言实现来体验问题求解的思维训练。
算法的操作时序性确保问题求解过程是按步骤进行的,这种执行规则非常简单机械。
所以,教学过程中要使学生经历算法化过程并体验计算思维,它有利于培养学生的理性思维和形式逻辑能力。
培养学生通过计算机编程,最终形成计算思维[4]。
4.2计算思维4.2.1计算思维的概念计算思维一词由Jeannette M. Wing(周以真教授)于2006年提出[5],其定义是:运用计算机科学的基础概念去求解问题、设计系统和理解人类行为。
它包括了涵盖计算机科学之广度的一系列思维活动。
4.2.2计算思维能做什么计算思维是每个人的基本技能,不仅仅属于计算机科学家。
我们应当使每个孩子在培养解析能力时不仅掌握阅读、写作和算术(Reading, wRiting, and aRithmetic——3R),还要学会计算思维。
正如印刷出版促进了3R的普及,计算和计算机也以类似的正反馈促进了计算思维的传播。
当我们必须求解一个特定的问题时,首先会问:解决这个问题有多困难?怎样才是最佳的解决方法?计算机科学根据坚实的理论基础来准确地回答这些问题。
表述问题的难度就是工具的基本能力,必须考虑的因素包括机器的指令系统、资源约束和操作环境。
为了有效地求解一个问题,我们可能要进一步问:一个近似解是否就够了,是否可以利用一下随机化?计算思维就是通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道怎样解决的问题。
计算思维是一种递归思维。
它是并行处理。
它是把代码译成数据又把数据译成代码。
它是由广义量纲分析进行的类型检查。
对于别名或赋予人与物多个名字的做法,它既知道其益处又了解其害处。
对于间接寻址和程序调用的方法,它既知道其威力又了解其代价。
它评价一个程序时,不仅仅根据其准确性和效率,还有美学的考量,而对于系统的设计,还考虑简洁和优雅。
4.3算法与计算思维二者的关系为了让人们对计算思维更易于理解,周教授提出计算思维是一种采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法,是基于关注分离的方法(So方法);是一种选择合适的方式去陈述一个问题,或对一个问题的相关方面建模使其易于处理的思维方法;是按照预防、保护及通过冗余、容错、纠错的方式,并从最坏情况进行系统恢复的一种思维方法;是利用启发式推理寻求解答,也即在不确定情况下的规划、学习和调度的思维方法;是利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行折衷的思维方法。
计算思维最根本的内容,即其本质( Essence)是抽象(Abst raction)和自动化(Automation)[6-7]。
陈杰华老师[4]将算法分为三种形式。
1)生活算法:即完成某一项工作的方法和步骤,例如一天的学习计划、安排或打算;2)数学算法:即对一类计算问题的机械的、统一的求解方法,例如一个二元一次方程组的解;3)计算机算法:即问题求解的精确描述,它具有明显的自动化特征,数据计算准度高并具有严格的操作时序,这是与计算机系统本身紧密相关的,所以用计算机实现问题求解,需要充分利用计算机的速度和存储优势,尽量发挥计算机与计算思维的威力。
学生在面对计算机问题时,可依据已有的知识,提出问题求解方案,并用算法进行描述,最终由机器执行程序来检验问题求解的效果。
5一题多解与计算思维为了培养学生的计算思维能力,训练学生的计算思维。
我们以一个求线性表的逆置的例子来进行讨论。
“对一个线性表L,请编写一个算法将其逆置”。
对该题的训练可以帮助学生复习和巩固所学的线性表的顺序存储结构和链式存储结构,同时为下一章讲述栈结构作准备和铺垫。
5.1顺序存储结构在讲授时,先给出问题的描述,让学生积极思考,怎么解决,写出解决思路。
然后,通过草稿纸和笔将算法步骤详细列在纸上,通过引导逐步让学生在纸上写出其程序,假设线性表的长度为n。
有同学在想,将线性表求逆,那我只要反过来输出就可以了,从最后一个元素开始到第一个元素依次输出即可,于是,采用一个for循环结构即可完成,得到了下面的算法1——reverse(SqList L)。
在主函数中调用该算法,得到了所要的结果。
同学们又想:将一个线性表逆置,即最后一个元素放在第一个元素的位置,倒数第二个元素放在第二个元素的位置……直到第一个元素放到了最后一个元素的位置;采用两个变量i和j进行操作,为此采用一个二重for循环,首先将变量i从1开始,把所有元素往后移动一个位置,腾出第一个位置,然后将最后的第n+1个元素(下标为n)放入第一元素的位置即可。
然后将变量i从2开始,将第二个元素到第n个元素依次后移一个位置,腾出第二个元素的位置,把最后的第n+1个元素(下标为n)放入第二元素的位置即可,此时即变量i从0变到n-1;依次类推直到腾出第n个元素的位置,将第一个元素放入即可。
最后得出算法2——reverse1 (SqList L)。
但在主函数调用该算法,再遍历输出,结果没有变,没有得到理想的结果。
是算法有错吗?通过检查算法没有错误,再逐步引导学生检查,如果算法没有错误,那么问题会出现在哪里呢,通过引导,发现问题出在书写函数时,函数的形参上,形参中的参数L,没有使用指针。
因为,该算法涉及到数据的移动,要改变下标的值,因此参数L应该设计为一个指针。
为了作对比,我们将该算法另存为reverse2,见算法3。
并把形参中的L定义为指针,在主函数中调用,遍历后得到了满意的结果。
还有没有什么算法?继续引导同学们思考,将自己的想法在草稿纸上写下来,稍后,我们在讲解中,自己进行检验、核对,看自己的思路和解法与老师讲的有什么不同。
同学们会想:将一个线性表逆置,即最后一个元素放在第一个元素的位置,第一个元素放在最后一个元素的位置,相当于将最后一个元素和第一个元素交换;第二个元素与倒数第二个元素交换;;可以设置两个变量,一个变量从第一个元素开始,往后移动,另一个变量从最后一个元素往前移动,直到j-i=0;i--){printf(“%d\t”,L.items[i]);}return 1;}算法1int reverse1(SqList L)//形式参数未定义为指针,线性表不变化{int i,j,n;n=L.length;for(i=0;i=i;j--)L.items[j+1]=L.items[j];L.items[i]=L.items[n];}return 1;}算法2int reverse2(SqList *L) //形式参数定义为指针,线性表才体现其思想{int i,j,n;n=L->length;for(i=0;i=i;j--)L->items[j+1]=L->items[j];L->items[i]=L->items[n];}return 1;}算法3int reverse3(SqList *L){int i,j,n,tmp;n=L->length;i=0;j=n-1;while(1){tmp=L->items[i];L->items[i]=L->items[j];L->items[j]=tmp;if(j-iitems[i]);printf(“\n”);return 1;}算法45.2链式存储结构由于链式存储结构比顺序存储结构复杂,为便于理解,先给出一个图示,如图1所示。