CH3嶘和队列课件_第1页
CH3嶘和队列课件_第2页
CH3嶘和队列课件_第3页
CH3嶘和队列课件_第4页
CH3嶘和队列课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CH3嶘和队列26、机遇对于有准备的头脑有特别的亲和力。27、自信是人格的核心。28、目标的坚定是性格中最必要的力量泉源之一,也是成功的利器之一。没有它,天才也会在矛盾无定的迷径中,徒劳无功。--查士德斐尔爵士。29、困难就是机遇。--温斯顿.丘吉尔。30、我奋斗,所以我快乐。--格林斯潘。CH3嶘和队列CH3嶘和队列26、机遇对于有准备的头脑有特别的亲和力。27、自信是人格的核心。28、目标的坚定是性格中最必要的力量泉源之一,也是成功的利器之一。没有它,天才也会在矛盾无定的迷径中,徒劳无功。--查士德斐尔爵士。29、困难就是机遇。--温斯顿.丘吉尔。30、我奋斗,所以我快乐。--格林斯潘。第三章栈和队列栈和队列是两种特殊的线性表,是操作受限的线性表,称限定性DS3.1栈(stack)3.2栈的应用举例3.3队列3.4队列应用举例3.1.1栈的定义定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈特点:先进后出(FILO)或后进先出(LIFO)栈s=(a1,a2,……,an)3.1栈(stack)栈顶(top):允许插入和删除的一端;栈底(bottom):不允许插入和删除的一端。在初中阶段的学生,由于学生自身在生理和心理方面等的不成熟,他们在具体的学习实践中,往往不能够做到专心致志,一心一意。劳逸结合是我们在学习过程中常会用到的一句话,即在学习实践的过程中,我们应根据青少年的生理和心理发育的特点,在教学实践的发展过程中,将学习和放松的时间有机地结合起来。1.利用体育游戏,激发学生的学习兴趣在体育教学实践中,单调枯燥的教学过程已经不能够适应现代课堂教学的需要,教师在教学实践中充分地调动学生的学习兴趣,激发学生在学习实践中充分地展示自我、体现自我的热情是体育教学的重要途径。在具体的教学实践中,通过游戏情境的创设能够有效地激发学生的学习兴趣。如在学习"障碍跑"的实践中,在跑的实践中,需要同学们在跑进一定的距离后以不同的方式通过不同的障碍物的自然快跑运动,途中一般要用到绕、跨、跳、钻、滚等方式通过障碍物,在学习的过程中,通过引入故事情节激发学生的学习兴趣,在游戏活动中,使学生的学习兴趣保持下去,在?d趣的激励下,带领学生开展积极地学习探索实践。我们来到森林里,看到那种小动物,就要变身成为他们,做他们的一种专有的体育动作,才能够变身回自己。"大家一起来,我们走到丛林里,看到一只小猴子,小猴子'爬、爬、爬'"。同学们在听到小猴子爬的口令时,立即作出爬的动作;"大家一起来,我们走到丛林里,看到一只小青蛙,小青蛙'跳、跳、跳'",学生立即作出跳的动作;"大家一起来,我们走到丛林里,看到一只小熊,小熊'走、走、走'"……在游戏化的学习情境中,学生的兴趣被极大的激发,他们在积极的学习实践中、在游戏的过程中,对游戏的内容进行积极地消化和吸收,从而使他们在游戏实践中有效地提高自身的学习兴趣,在兴趣的激发下,积极地投入到体育学习的实践中去,有效地提高了学生的学习效果。2.在体育游戏活动中,提高学生的学习参与意识在体育课堂教学实践中,单纯地理论知识的引导过程中与其他课程的知识学习的过程同样有着一定的枯燥性和乏味性,初中阶段的学生在具体的学习实践中,因其自身的条件的限制,不能够在整节课的学习过程中做到专心致志地投入学习实践的过程中,因此,在具体的教学实践中,我们可根据学生的学习实际,将游戏的过程与体育学习的过程有机结合起来,让学生在游戏的过程中体会体育锻炼的基本技能,在潜移默化中提高学生的参与意识和学习能力,使学生的学习效率得到有效的提高。如在学习"立定跳远"的学习实践中,我们以轻松的提问开始课程的学习,以鼓励赞扬式的语言,拉近师生的关系,提高学生的学习兴趣,在音乐的引导下,让学生模仿课文中小青蛙找家的片段,展开具体的学习实践,在具体生动的游戏情境的创设过程中,提高学生的参与兴趣。接下来,我们开始进入正题,青蛙妈妈在家中等待着小青蛙们的归来,小青蛙们准备好了吗?学生们在游戏化的学习情境中,在轻松愉悦的学习氛围中,尽情地跳着。3.在体育游戏实践中,提高学生的团结合作意识体育学习的实践中,很多时候、很多体育项目的进行和开展不是由一个人单独完成的,这时候,同学间的团结合作就显得非常的重要了。学生在体育学习实践中的收获,将会通过自身的学习体验潜移默化地转移到学习和生活实践中去,在无形中影响着学生的学习和生活实践。如在学习"合作跑"的实践中,首先给学生点时间让学生去练习和商量对策,看看如何跑能够实现二人的有效配合。接着,我们在具体的合作跑实践中让学生去体验他们在跑的过程中遇到的麻烦和问题,体验的时间结束,学生纷纷发表意见,阐述他们在跑的过程中遇到的问题:动作不一致、行动不便利、节奏跟不上……学生在跑的过程中遇到的一系列问题关键在于:配合得不到位。如何改变这种局面呢?两人一组合作实践(预先告诉学生要在练习实践结束后开展游戏竞赛活动,在游戏竞赛的机制激发下,学生能够积极地融入体育学习的实践中,从而有效地提高学生的学习效率)。总之,在初中体育教学实践中,通过体育游戏化教学的有效实施,能够有效地激发学生的学习兴趣,提高学生的参与能力,使学生在积极的学习实践中,感受到身体素质的有效提高,感受到在游戏实践中团结合作的重要性,同时在具体的实践过程中逐步培养起学生团结一致、勇敢积极、乐观向上的精神。在丰富的学习实践中提高学生的参与体育锻炼的意识,提高学生的实践健身意识,有效地促进学生的全面发展。小学英语教师在备课时先要考虑如何有效创设语境,为学生提供真实的语言环境,发展学生的语言运用能力。尤其是在农村学校,小学生所接触的真实的英语语境十分罕见,所以教师更应该为学生在课堂上营造有效的语境,吸引学生参与,使学生获得更多的知识,提高他们的英语运用能力。一、创设的语境应当契合真实情境小学英语教师授课伊始往往向学生进行提问,提问的内容多以“Howareyou”为主,而学生的作答通常也仅仅是对课上学过的句型的机械复述,即“Fine,thankyou.Andyou?”其后,教师便回答:“I'mfine,too.”这样的提问方式尽管能够起到帮助学生复习课上知识的效果,然而实事求是地讲,班级的学生难道能够确保人人都很健康吗?会不会有学生仅仅是为了回答而回答呢?曾经有这样一个笑话,一个中国人学习英语历时十余年,其后赴美生活,一日在出行途中掉落于下水井之中,遂高声呼救:“Helpme!”在警察赶到现场后向其询问情况:“Howareyou?”这位不幸的落井者按照惯性思维回答道:“Fine,thankyou.Andyou?”结果便是警察离去。这个笑话提醒广大小学英语教师,语言教学的目的不是向学生单纯传授语言知识,而是使学生具备语言实际应用能力。鉴于此,小学英语教师应当改变以往为了提问而提问的误区,多为学生创设真实的语言应用情境,使学生真正掌握语言交际能力。二、创设的语境应当以激发学生知识探究欲为主旨任何教学活动的内涵在于使学习者能够产生知识自主探究欲,进而更好地投入到学习之中。从以往小学英语的教学情况来看,英语教师往往是按部就班地为学生讲解单词、句型和语法知识,学生在这一过程中处于被动的知识接受地位,难以形成知识自主探究欲,因而会感觉英语知识学习实在是一门苦差事。考虑到这一现实,笔者在教学中主动引导学生去发现、去思考,有意识地帮助其养成英语知识自主探究意识,从最终的教学效果来看较为理想。三、创设的语境要联系学生生活实际教师所创设的语境切不可偏离学生生活实际,这样会使学生不感兴趣。尤其是农村学校,学生的生活比较单调,教师更应该联系农村学生的生活实际创设语境。如在学习Breakfast时,教师询问学生:“Whatdoyouhaveforbreakfast?”由于农村学生早饭比较单一,多数学生肯定会说“rice”。教师为了让学生更自然地说出所学的食物类单词,就让学生扮演课本中的人物,接着再问答,学生的积极性便高了起来。四、任何语境的创设都要有存在的意义学者JackC.Richards说过:“在英语教学中,要与学生进行有意义的交流。”学生只有渴望了解未知,才会愿意主动与别人交换信息,才能达到交际的目的。如“What’syourjob”这个句型涉及“What’syour/his/her/theirjob/jobs”等教学内容,我在授课过程中为学生提供了一份记载自身详细家庭成员情况的表格,要求学生根据表格中所载明的家庭成员情况,向老师发问,学生从未接触过这样的教学模式,以往的教学提问环节均为教师向学生发问,因此班级学生表现出了极大的参与热情,纷纷举手要求提问,所提出的问题有:“Whichisyourmother”“What’sherjob”等。其后,我又对学生进行提问“What’syourfather’s/mother’sjob”时,学生便能够应对自如。五、结合语调和肢体语言创设语境小学生对于英语学习才刚入门,他们的词汇量有限,只有通过教师的语调和肢体语言才能充分了解教师的表达。教师要耐心听学生的表达,即使有错误、不完整,也不要轻易打断,尤其是在师生共同创设的语境中。如在课文主题为动物的课上,我向学生提出了一个问题:“Whatanimaldoyoulike?”某位学生立刻回答:“sheep.”看着班级其他学生茫然的表情,我于是模仿了几声羊叫,从而使其他学生恍然大悟,知道了该词是绵羊的含义,而我亦夸奖了这名学生的词汇掌握水平,使其他学生也开始有意识地扩展自身词汇量。此外,在英语教学中,考虑到一些学生怯于在其他同学面前使用英语,笔者便有意识地在课堂上创设轻松愉悦的氛围,使学生的紧张感得到有效的缓解,进而敢于在其他同学面前大胆地说出英语。同时,为创设轻松愉悦的教学情境,笔者从一些细节着手,如对学生的课堂表现不吝赞美,使学生感受到来自教师的肯定,进而激发学习热情,还有便是将课堂桌椅摆放成面对面的位置,使学生在教室环境、布局的改变影响下产生新鲜感,进而更为主动地投入于课堂学习之中。实践表明,小学英语课堂也是小学生与英语教师进行情感沟通和思想交流的场所。创新英语教学方式,必须营造开放的空间、宽松的环境、和谐的师生关系、民主的教学氛围,激活学生的思维。综上所述,要想实现成功的课堂教学,教师必须创设丰富的、有意义的语境,让学生在具体语境中开展语言实践活动。希望本文对于英语课堂语境创设的论述能为广大英语教师提供一些有益参考。第三章栈和队列栈和队列是两种特殊的线性表,是操作受限的线性表,称限定性DS3.1栈(stack)3.2栈的应用举例3.3队列3.4队列应用举例3.1.1栈的定义定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈特点:先进后出(FILO)或后进先出(LIFO)ana1a2……...栈底栈顶...出栈进栈栈s=(a1,a2,……,an)3.1栈(stack)栈顶(top):允许插入和删除的一端;栈底(bottom):不允许插入和删除的一端。1.顺序栈top=-1123450栈空栈顶指针top,指向实际栈顶位置,初值为-1top123450进栈Atop出栈栈满BCDEF设数组维数为Mtop=-1,栈空,此时出栈,则下溢(underflow)top=M-1,栈满,此时入栈,则上溢(overflow)toptoptoptoptop123450ABCDEFtoptoptoptoptoptop栈空3.1.2栈的存储实现和运算实现存储结构的实现#defineMAXSIZE1000typedefstruct{datatypedata[MAXSIZE];inttop;}SeqStack;运算实现(1)置空栈(2)判栈空(3)入栈(4)出栈(5)取栈顶元素S->top=-1123450栈空S->top123450进栈xS->topS->data[s->top]栈顶^…...topdatanext栈底结点定义入栈算法出栈算法typedefstructnode{intdata;structnode*next;}StackNode,*LinkStack;^…...栈底toptopxptop^…...栈底topq2.链栈3.2栈的应用举例[例3-1]数制转换问题:将十进制N转换为r进制的数。例把十进制数159转换成八进制数(159)10=(237)81598198280237余7余3余2toptop7top73top732算法思想:while(N>0){将N%r结果进栈;N=N/r;}while(栈非空)出栈并输出原栈顶元素;[例3-2]利用栈实现迷宫的求解:1、问题描述:心理学家把一只老鼠从一个无顶盖的大盒子的入口处赶进迷宫。迷宫中设置很多墙壁,对前进方向形成了多处障碍,心理学家在迷宫的唯一出口放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口。2、算法基本思想描述:利用回溯法,从入口处出发,按某一方向不断试探,若能走通,则到达新点,否则试探另一未试探过的方向。若所有的方向均没有通路,则沿原路返回前一点,换一个未试探过的通路继续试探,直到找到出口,或所有的通路都试探过,未找到一条通路回到出口点。在试探过程中,为保证在到达某一点无路时,能正确返回前一点,需要用一个栈来保存到达的每一点的位置及试探方向。3、设计:

1)数据结构的设计(1)迷宫的表示设迷宫为m行n列,利用二维数组maze[m][n]来表示一个迷宫,其中(1,1)为入口,(m,n)为出口,

maze[m][n]=0或1,其中0表示通路,1表示不通。01110111101011110100000101110111100110000110011012345678123456入口出口011101111010111101000001011101111001100001100110迷宫定义#definem6#definen8intmaze[m+2][n+2]当从某点向试探时,之间点有8个方向可以试探,而四个角点有3个方向,其他边缘点有5个方向,为使问题简单化,在迷宫的四周加了一层,表示墙壁,这样每个点的试探方向为8。11111111111111111111111111111111123456789012345670(2)试探方向的表示在上述表示迷宫的情况下,每个点有8个方向可以试探,设当前点的坐标为(x,y),与其相邻的8个点的坐标可根据与该点的相邻方位得到。为了方便求出新点的坐标,将从正东开始沿顺时针进行的这8个方向的坐标增量放在一个结构数组move[8]中,其中x表示横坐标增量,y表示纵坐标增量。(x,y+1)(x,y-1)(x-1,y)(x+1,y)(x+1,y+1)(x-1,y+1)(x-1,y-1)(x+1,y-1)(x,y)试探方向的表示typedefstruct{intx,y;}item;itemmove[8]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};(3)栈的表示当到达了某点无路可走,需从前一点的下一个方向试探。因此,压入栈中的不仅是顺序到达的各点的坐标,而且还有从前一点到达本点的方向序号。栈的表示#defineMAXSIZE20typedefstruct{intx,y,d;}datatype;typedefstruct{datatypedata[MAXSIZE];inttop;}SeqStack;2)算法的设计(1)防止重复到达某点的考虑为避免发生死循环,当到达某点(i,j)后,使maze[i][j]置-1,以便区分未到达过的顶点。算法结束前可恢复原迷宫。(2)算法描述

①栈初始化;②将入口点坐标及初始试探方向(设为-1)入栈,并将入口点设置为已走过;③设置found为0(未找到出口点);1,1,-1top④while(未找到&&栈非空)

{将栈顶元素赋值给x;从x点出发寻找下一个可以走的方位;if(找到方位){修改栈顶元素的方位值;计算新点,并设置为已走过;将新点位置及初始试探方位值进栈;if(新点是结束点)found=1;}else//没找到可走的方位,说明从该点出发已无路可走

出栈;}⑤if(找到)打印路径;else打印“该迷宫无路径”011101111010111101000001011101111001100001100110111111111111111111111111111111111234567890123456701,1,1top2,2,-1……1,1,12,2,13,3,-11,1,12,2,13,3,03,4,03,5,03,6,03,7,-1-1-1-1-1-1-1-11,1,-1top1,1,02,2,13,3,03,4,03,5,03,6,03,7,-101110111101011110100000101110111100110000110011011111111111111111111111111111111123456789012345670-1-1-1-1-1-1-1-11,1,02,2,13,3,03,4,03,5,03,6,0-1-1-1-11,1,02,2,13,3,03,4,03,5,03,6,34,5,15,6,05,7,05,8,26,8,-1……[例3-3]表达式求值中缀表达式后缀表达式(RPN)a*b+cab*c+a+b*cabc*+a+(b*c+d)/eabc*d+e/+(1)中缀表达式求值:对象栈和运算符栈例计算2+(4-3)*6对象栈算符栈2

+对象栈算符栈2+16*对象栈算符栈2+6对象栈算符栈8对象栈算符栈2+(对象栈算符栈2+(4-3对象栈算符栈2+1(对象栈算符栈2+1左括号在栈外优先级最高右括号遇到左括号,左括号直接出栈在栈外优先级最高左括号在栈内优先级比-低算法描述:读入表达式一个字符;while(未遇到结束符){if(当前字符是运算对象){将该字符入对象栈;扫描下一个字符;}else//当前字符是运算符switch(当前运算符){case左括号:{进栈;扫描下一个字符;break;}case右括号:if(栈顶是左括号){出栈;扫描下一个字符;break;}else执行default语句;default:if(当前字符优先级<=运算栈顶的优先级){从运算栈弹出一个运算符;从对象栈弹出两个对象;计算,将结果入对象栈;}else{将当前运算符入运算符栈;扫描下一个字符;}}//switch结束}//while结束输出对象栈中栈顶的值;算法描述:读入表达式一个字符;while(未遇到结束符){if(是运算对象)压入栈;else//若是运算符{从栈中弹出2个数,将运算结果再压入栈;读入下一个字符;}输出栈顶值;224243例计算2+(4-3)*6后缀表达式:243-6*+21(2)后缀表达式求值步骤:

只需对象栈

(3)中缀表达式转换成后缀表达式:只需运算符栈216268[例3-4]栈与递归r主程序srrrs子程序1rst子程序2rst子程序3

(1)

过程的嵌套

(2)

递归算法:

1(n=0,1)n!=n(n-1)!(n>1)1.定义:在调用一个函数的过程中直接或间接地调用该函数本身。直接调用intf(x)intx;{inty,z;…..z=f(x);……return(2*z);}

f函数调用f函数intf1(x)intx;{inty,z;…..z=f2(y);……return(2*z);}intf2(t)intt;{inta,c;…..c=f1(a);……return(3+c);}间接调用f1函数调用f2函数f2函数调用f1函数main(){intm,n=3;m=fact(n);R1:printf(“%d!=%d\n”,n,m);}例如:写一函数求n!intfact(intn){intf;if(n==0)f=1;elseR2:f=fact(n-1)*n;returnf;}以求3的阶乘为例:fac(3)=3*fac(2)fac(2)=2*fac(1)fac(1)=1fac(2)=2*1fac(3)=3*2*1下推回代利用栈实现递归调用n=3R1fact(3);R2:f=3*fact(2)n=2R2n=3R1返回f=3*2*1n=3R11R22R23R10R2主程序R1:输出f(3);

……fact(2);R2:f=2*fact(1)fact(1);R2:f=1*fact(0)返回fact(0);f=1返回f=2*1;n=2R2n=3R1n=2R2n=3R1n=1R2返回f=1*1n=2R2n=3R1n=1R2输出63.3.1队列的定义及特点定义:队列是限定只能在表的一端进行插入,在表的另一端进行删除的线性表队尾(rear)——允许插入的一端队头(front)——允许删除的一端队列特点:先进先出(FIFO)a1a2a3…….an入队出队frontrear队列Q=(a1,a2,……,an)3.3队列链队列结点定义typedefstructnode{datatypedata;structnode*next;}QNode;QNode*front,*rear;头结点^…...front队头队尾rear设队首、队尾指针front和rear,front指向头结点,rear指向队尾3.3.2队列的存储实现及运算实现头结点frontrear^头结点^…...q->front队头队尾q->reartypedefstructnode{datatypedata;structnode*next;}QNode;typedefstruct{QNode*front,*rear;}LQueue;LQueue*q;头结点q->frontq->rear^链队列基本运算实现结点定义(1)创建一个带头结点的空队头结点q->frontq->rear^(2)判队空(3)入队q->frontq->rearx入队^xq->frontq->reary入队x^yfrontrearx出队x^yfrontreary出队^(4)出队队列的顺序存储结构1、顺序队#defineMAXSIZE1000typedefstruct{datatypedata[MAXSIZE];intfront,rear;}SeQueue;SeQueue*sq;sq->rear123450J1J2J3sq->front约定:sq->rear指示队尾元素;Sq->front指示队头元素前一位置front=-1rear=-1123450队空123450frontJ1,J1,J3入队J1J2J3rearrear123450J4,J5,J6入队J4J5J6front初值sq->front=sq->rear=-1空队列条件:sq->front==sq->rear入队列:sq->data[++sq->rear]=x;出队列:x=sq->data[++sq->front];rearrearfrontrear123450J1,J2,J3出队J1J2J3frontfrontfront存在问题设数组维数为MAXSIZE,则:当front=-1,rear=MAXSIZE-1时,再有元素入队发生溢出——真溢出当front-1,rear=MAXSIZE-1时,再有元素入队发生溢出——假溢出解决方案队首固定,每次出队剩余元素向下移动——浪费时间循环队列实现:利用“模”运算入队:sq->rear=(sq->rear+1)%MAXSIZE;sq->data[sq->rear]=x;出队:sq->front=(sq->front+1)%MAXSIZE;队满、队空判定条件0MAXSIZE-11sq->frontsq->rear…...…...基本思想:把队列设想成环形让sq->data[0]接在sq->data[MAXSIZE-1]之后,若sq->rear+1==MAXSIZE,则令sq->rear=0;2、循环队列012345rearfrontJ4J5J6012345rearfrontJ9J8J7J4J5J6012345rearfront初始状态J4,J5,J6出队J7,J8,J9入队队空:sq->front==sq->rear队满:sq->front==sq->rear解决方案:1.另外设一个标志以区别队空、队满2.少用一个元素空间:队空:sq->front==sq->rear

队满:(sq->rear+1)%MAXSIZE==sq->frontJ4J5J6012345rearfrontJ8J7(1)置空队按第一种解决方法的循环队列实现存储结构#defineMAXSIZE1000typedefstruct{datatypedata[MAXSIZE];intfront,rear;

intnum;}C_SeQueue;C_SeQueue*sq;

012345rearfront置空队(2)入队(3)出队(4)判队空3.4队列应用举例[例3-5]求迷宫的最短路径1、算法基本思想描述:从迷宫入口点出发,向四周搜索,记下所有一步能到达的坐标点;然后依次从这些点出发,再记下所有一步能到达的坐标点,……..依此类推,直到到达迷宫的出口点为止,然后从迷宫出口点沿搜索路径回溯。这样就找到了一条迷宫的最短路径,否则迷宫无路径。由于先到达的点先搜索,故用先进先出的数据结构——队列来保存已到达的坐标点。01110111

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论