版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《数据结构》课程数字化教学设计目录TOC\o"1-3"\h\u11198摘要 4170121绪论 6123571.1问题背景 6119771.2开发环境 6265651.3开发工具介绍 6148292需求分析 8153792.1问题定义 8153502.1.1问题分析 863332.1.2用户目标 8242612.2系统的功能需求 8252182.2.1正确表达算法 8217542.2.2功能实用化 9181682.2.3具体演示功能 975562.2.4界面要求 10226443概要设计 1145893.1方案确定 11214603.2系统结构 11316373.2.1系统结构总框图 11211543.2.2模块功能说明 11241923.2.3算法演示子模块中要注意的问题 12215104详细设计 149014.1数据设计 14293204.2系统主程序界面设计 14255784.3演示模块流程图 14285904.3.1单链表创建流程图 1469374.3.2单链表插入流程图 1685514.3.3单链表删除流程图 17222044.3.4栈——入栈流程图 17307634.3.5栈——出栈流程图 18166464.3.6队列——入队流程图 19191214.3.7队列——出队流程图 19322404.3.8二叉树——各类遍历流程图 20155215系统功能实现 21234755.1主菜单界面模块编码 21327015.4队列模块编码 2860926系统测试 32274656.1系统常用测试方法 3225921结束语 36958参考文献 37摘要目前,随着我国经济和科技的高速发展,特别是计算机技术科学的突飞猛进,对计算机相关人才,尤其是中高端人才的需求日益增长。对于《数据结构》这门学科,里面设计许多算法,很多学生在学习时普遍反映找不到方向,复习也无从下手。当然,对于计算机这一学科,所有机械式的死记硬背的学习方法都收效甚微。假如有一个简单易学且直观的交互系统,使学生们在学习《数据结构》中各类算法时,能够参与其中,加深理解,将使学生受益匪浅。本文主要利用基于Unity实现动态交互来介绍计算机学科辅助教学课件——《数据结构》算法动态演示系统,它详述了算法演示的实现技巧的特点。能够详述上述特点的原因,一方面,利用了交互式算法演示系统的生动性以及直观性,使教学内容更加的系统化和形象化,降低了学习者对相关知识理解的难易程度;另一方面,由于演示系统的趣味性和交互性,能够激发学生对于这一课程浓厚的学习兴趣,使其乐在其中。数据结构,算法,Unity,动态演示1绪论1.1问题背景数据结构于初学者来说,是一门较难学的学科,在进行教学的过程中,数据结构是一门比较难学的课程,教学过程中,如果能够利用计算机进行辅助教学,可以提高教学效果,因此设计出这样的系统不仅有助于学习数据结构,同时也能够增强学生的学习兴趣,同时提高他们的编程能力。因为数据结构的原理和算法的抽象性,所以要理解并且掌握其中的原理就对学生而言比较困难。本系统通过对经典的算法进行交互性动态演示,让人能更好地了解并且理解算法,抓住算法的本质,从而能够更好地学习数据结构这门课程。1.2开发环境开发环境:Unity2019.3.0运行环境:Windows系列平台1.3开发工具介绍Unity是一款由UnityTechnologies研发的跨平台2D/3D游戏引擎。它以交互的图型化开发环境为首要方式,编译器运行在Windows和MacOSX下,可发布游戏至Windows、Wii、OSX、iOS或HTML5等众多平台。Unity还是广泛用于建筑可视化、实时三维动画等类型互动内容的综合型创作工具。Unity3D2019是一款3D渲染编辑软件,它也是为艺术家、设计师、开发者及其它成员们提供的创作中心,它包含二维空间与3D场景设计工具、叙事和影片、光照、音频系统管理工具、粒子效果和强大的关键帧清单动画系统,从动态单玩家游戏到实时多人游戏等,联网游戏是最受欢迎和最为成功的,Unity为所有制作者提供制作这些类型的游戏并扩展至任何成功级别所需的工具、服务和基础设施。2需求分析2.1问题定义2.1.1问题分析本系统要完成的工作是利用数字媒体虚拟交互技术将课程中的一些难点章节的知识点进行三维动画演示并加入人机交互环节,能将深奥抽象的知识直观形象地呈现给学生。2.1.2用户目标本系统满足学习者对算法的输入数据和过程执行的控制方式的各类需求,在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况。整个系统使用按钮、菜单等进行交互。其中,系统中的各个菜单项对应一个动作或一个相应的子菜单。系统将一直处于选择按钮、菜单或执行动作的状态,直到选择了退出动作为止。用户的目标也就是该演示系统所希望达到的目的。2.2系统的功能需求系统的功能需求也就是本系统要实现的具体内容。算法演示系统要求能够动态演示《数据结构》中的算法的执行过程。用户可以自由选择演示的算法,且在执行某一个特定算法操作演示前提示用户输入操作元素及操作方法。由于时间有限而要演示的算法很多,因此,本文将以数个经典放入算法为例,实现它们的动态演示并且掌握这种方法,从而能够用自己不成熟的意见或作品引出别人更好的意见或好作品。本系统要演示的内容包括三个经典算法:单链表的建立、插入与删除、二叉树的建立与遍历,图的最短路径求解算法(Dijkstra算法),由主界面菜单显示。2.2.1正确表达算法这是本系统的可以说是最基本的一项要求,因为交互式动态演示的目的就是能够让学习者更好地学习理解数据结构中的经典算法,学习数据结构,演示只是其中的一种手段,用来降低吸收理解知识的难度、传递知识以使得更多学习者学习知识,因此首先得保证知识的正确性。2.2.2功能实用化为了能够真正让学习者深入理解算法的效果,此系统将使用多种演示手段(如单步跟踪和连续执行等)和多种调用方式来演示算法的执行过程。2.2.3具体演示功能A.单链表算法①选择输入数据方式,包括系统随机生成以及手动选择;②若为手动输入,创建链表时选择是链表的创建结点个数,插入(删除)结点时,确定插入(删除)的位置,插入(删除)结点的个数;③屏幕上输入各操作算法的执行过程。B.二叉树算法①选择输入数据方式,包括系统随机生成以及手动选择;②若为手动输入,由用户确定二叉树创建叶子结点的个数,哪种遍历顺序;③屏幕上输出各类遍历算法的执行过程。C.图的最短路径求解算法①选择输入数据方式,包括系统随机生成以及手动选择;②若为手动输入,由用户确定图中结点的个数以及边的条数,从哪个结点开始遍历;③在屏幕上输出执行过程。2.2.4界面要求系统的操作界面应该友好,包括视觉的简洁性、操作的方便性等。在设计用户界面中,对于主题的选择应该针对面向的学习者群体选择面向教学方面的主题,一般以蓝色和白色为主调,系统的菜单项各类层次之间关联清晰,菜单项不应过多,菜单项名不应过于繁杂,且选择的背景图要尽量地能够切实地融合系统主题。3概要设计3.1方案确定设计本系统过程中,将要求实现几种不同数据结构算法的动态演示效果,因此,可以利用结构化程序设计的自顶向下,逐步求精的思想来进行本交互系统的设计,在设计过程中,可将总的设计任务划分成为若干子任务,分别对若干子功能模块进行相关设计。演示系统中,模块的入口是主模块的菜单,系统定义的公用的接口来实现每个模块之间的信息传递,当生成了新的模块时,只需将主界面模块进行连接。3.2系统结构3.2.1系统结构总框图本交互系统的概要结构如图3.1所示。其中,每个模块可以根据系统总体结构图进行详细设计。总框图中的各个模块之间相互独立,以增强系统的可维护性和可扩充性。图模块功能说明主菜单模块:各选项菜单的显示和各模块之间的调用单链表模块:完成单链表的创建、插入、删除的动态交互演示队和栈模块:完成栈的出栈和入栈,队列的出队和入队二叉树模块:完成二叉树的三种遍历算法的顶动态演示3.2.3算法演示子模块中要注意的问题为使得各个子模块之间具有高内聚低耦合的优良特性,设计的各个子模块应该:单步执行:有利于加深学习者的理解;连续执行:对学习者已经能够理解的部分进行跳跃;速度可调:根据学习者的掌握程度适当调节算法执行过程的速度;任意时刻复位等复杂功能使用时输入的字符简单:简化操作;系统相应速度快:系统的相应速度有利于提高学习者对系统的满意程度。4详细设计4.1数据设计基类型:数组和向量为主,其他数据类型为辅4.2系统主程序界面设计可选择单链表、队列和栈、二叉树等的演示4.3演示模块流程图4.3.1单链表创建流程图单链表的创建分为前插法和后插法,此处利用前插法来实现单链表的创建,由于单链表创建的具体思想我们已经比较熟悉,因此无需关心具体的算法,我们应该注重怎样将单链表的动态交互演示过程的实现,该演示的基本思想是:用户进入程序之后,可输入自己想创建单链表中含有的结点个数(系统限制个数为:1-10个);然后系统根据用户输入的结点数N创建N个结点的单链表,并在屏幕上动态的演示,完成算法实现过程。由图4-1可知,此单链表创建算法演示分以下几个步骤:1.用户进入程序后,选择产生结点个数;2.用户选择演示方式;3.演示完毕退出。具体的演示过程我们会在系统功能实现这叔章中详细介绍,这里只谈整个演示的流程。该演示算法流程图如图4-1:图4-14.3.2单链表插入流程图这里我们主要关心的是单链表的插入结点个数和结点在链表中的插入位置。该动态演示程序的思想是:在用户进入程序之后,先输入待插入的结点的个数,然后输入待插入结点的位置,在插入过程中,需判断插入的位置是否正确,若正确,则算法继续执行;否则重新输入插入位置,直到插入位置合法。然后按执行执行直到演示完成。该演示算法流程图如图4-2。图4-24.3.3单链表删除流程图这里我们主要关心的是单链表的删除结点的个数和结点在链表中的删除的位置。该动态演示程序的思想是:在用户进入程序之后,先输入待插入的结点的个数,然后输入待插入结点的位置,然后按执行执行直到演示完成。该演示算法流程图如图4-3。图4-34.3.4栈——入栈流程图这里我们主要关心的是栈的入栈的个数。该动态演示程序的思想是:在用户进入程序之后,先输入待入栈结点的个数,判断入栈结点个数是否合法,若合法,则进行入栈演示,然后按执行执行直到演示完成,否则重新输入入栈个数,直至入栈个数合法为止。该演示算法流程图如图4-4。图4-44.3.5栈——出栈流程图这里我们主要关心的是栈的出栈的个数。该动态演示程序的思想是:在用户进入程序之后,先输入待场景化栈结点的个数,判断出栈结点个数是否合法,若合法,则进行出栈演示,然后按执行执行直到演示完成,否则重新输入出栈个数,直至出栈个数合法为止。该演示算法流程图如图4-5。图4-54.3.6队列——入队流程图这里我们主要关心的是队列的入队的个数。该动态演示程序的思想是:在用户进入程序之后,先输入待入队结点的个数,判断入队结点个数是否合法,若合法,则进行入队的动态演示,然后按执行执行直到演示完成,否则重新输入入队个数,直至入栈个数合法为止。该演示算法流程图如图4-6。图4-64.3.7队列——出队流程图这里我们主要关心的是队列的出队的个数。该动态演示程序的思想是:在用户进入程序之后,先输入待出队结点的个数,判断出队结点个数是否合法,若合法,则进行出队的动态演示,然后按执行执行直到演示完成,否则重新输出队个数,直至出队个数合法为止。该演示算法流程图如图4-7。图4-74.3.8二叉树——各类遍历流程图这里我们主要关心的是二叉树遍历的算法种类。该动态演示程序的思想是:在用户进入程序之后,先确定二叉树节点的个数,然后选择遍历的算法类型,包括前序遍历算法、中序遍历算法以及后序遍历算法,然后执行直到演示完成。该演示算法流程图如图4-8。图4-85系统功能实现5.1主菜单界面模块编码本系统的主界面如图5-1所示,是一个有四个按钮的静态场景,四个按钮的名称分别为单链表、栈、队列和二叉树。模块实现步骤:设置按钮;修改按钮的相关参数(包括按钮大小、按钮背景、按钮内容以及按钮的);给按钮加上组件,使得在点击按钮时可以跳转场景。核心代码实现如下:5.2单链表模块编码单链表模块主要实现单链表的创建、插入和删除操作,以及对主菜单界面的调用(即返回)。5.2.1单链表的创建(尾插法实现)这里我们主要解决的问题是单链表结点创建的个数,新生成单链表移动的速度以及箭头形成的速度。在生成结点过程中,还需要生成指向另一个结点的箭头,其他要注意执行过程中要用尾插法实现结点的加入。核心代码实现如下:publicvoidInstanceNode(){score=int.Parse(NodesScore.text);for(inti=0;i<score;i++){InputFieldImageUI=Instantiate(NodesImage);ImageUI.transform.SetParent(BG1);ImageUI.transform.position=newVector2(400,-900);NodeList.Add(ImageUI.transform);}}publicvoidTestD(){NodeList[0].DOLocalMove(newVector2(-438,28),MoveSpeed).OnComplete(()=>{if(NodeList[1]==null)return;NodeList[1].DOLocalMove(newVector2(-438+200*1,28)MoveSpeed).OnComplete(()=>{NodeList[0].GetChild(2).transform.DOScaleX(Max,1);if(NodeList[2]==null)return;NodeList[2].DOLocalMove(newVector2(-438+200*2,28),MoveSpeed).OnComplete(()=>{NodeList[1].GetChild(2).transform.DOScaleX(Max,1);if(NodeList[3]==null)return;NodeList[3].DOLocalMove(newVector2(-438+200*3,28), MoveSpeed).OnComplete(()=>{NodeList[2].GetChild(2).transform.DOScaleX(Max,1);if(NodeList[4]==null)return;NodeList[4].DOLocalMove(newVector2(-438+200*4,28), MoveSpeed).OnComplete(()=>{NodeList[3].GetChild(2).transform.DOScaleX(Max,1);if(NodeList[5]==null)return;NodeList[5].DOLocalMove(newVector2(-438+200*4,28-150),MoveSpeed).OnComplete(()=>{NodeList[4].GetChild(4).transform.DOScaleX(Max,0.7f);if(NodeList[6]==null)return;NodeList[6].DOLocalMove(newVector2(-438+200*3,28-150),MoveSpeed).OnComplete(()=>{NodeList[5].GetChild(3).transform.DOScaleX(Max,1);if(NodeList[7]==null)return;NodeList[7].DOLocalMove(newVector2(-438+200*2,28-150),MoveSpeed).OnComplete(()=>{NodeList[6].GetChild(3).transform.DOScaleX(Max,1);if(NodeList[8]==null)return;NodeList[8].DOLocalMove(newVector2(-438+200*1,28-150),MoveSpeed).OnComplete(()=>(NodeList[7].GetChild(3).transform.DOScaleX(Max,1);if(NodeList[9]==null)return;NodeList[9].DOLocalMove(newVector2(-438,28-150),MoveSpeed).OnComplete(()=>{NodeList[8].GetChild(3).transform.DOScaleX(Max,1);if(NodeList[10]==null)return;NodeList[10].DOLocalMove(newVector2(-438,28-150),MoveSpeed).OnComplete(()=>{NodeList[9].GetChild(2).transform.DOScaleX(Max,1);if(NodeList[11]==null)return;)};5.2.2单链表的插入这里我们主要解决的问题是单链表结点插入的位置以及插入结点的个数,新生成单链表移动的速度以及箭头形成的速度。在生成结点过程中,还需要生成指向另一个结点的箭头。核心代码实现如下:score=Content.text.Length;Head=newnode();Thisnode=newnode(Head);Head.next=Thisnode;Head.value=Content.text[0].ToString();InputFieldImageUIs=Instantiate(NodesImage);ImageUIs.transform.SetParent(BG);ImageUIs.text=Content.text[0].ToString();ImageUIs.transform.position=newVector2(400,-900);NodeList.Add(ImageUIs.transform);for(inti=1;i<score;i++){nodess=newnode(Head);Thisnode.next=ss;Thisnode.value=Content.text[i].ToString();Thisnode=Thisnode.next;InputFieldImageUI=Instantiate(NodesImage);ImageUI.transform.SetParent(BG);ImageUI.text=Content.text[i].ToString();ImageUI.transform.position=newVector2(400,-900);NodeList.Add(ImageUI.transform);}}5.2.2单链表的删除这里我们主要解决的问题是单链表结点删除的位置以及删除结点的个数,删除结点时交箭头的变动指向,在删除一个或多个结点以后,箭头能指向正确的后继结点;还需考虑被删除结点图标的隐藏问题。核心代码实现如下:publicvoidRemoveS(){for(inti=2;i<5;i++){NodeList[score-2].GetChild(i).transform.DOScaleX(0,1f);}Destroy(NodeList[score-1].gameObject,1.5f);}5.3栈模块栈模块主要实现栈的创建、入栈和出栈操作,以及对主菜单界面的调用(即返回)。5.3.1栈的创建动态演示这里我们主要解决的问题是栈创建的结点个数、栈的样式、及创建时结点从栈的入口进入的动态演示以及在栈中创建一个或多个结点以后,箭头能指向正确的后继结点。核心代码实现如下:publicvoidStartGame(){if(string.IsNullOrEmpty(Content.text)||Content.text==null){Content.text=Content.transform.Find("Placeholder").GetComponent<Text>().text;}else{}score=int.Parse(Content.text);for(inti=0;i<score;i++){GameObjects=Instantiate(NodesImage).gameObject;s.transform.SetParent(BG);s.transform.position=newVector2(272.5f,-1400);NodeList.Add(s.transform);stack.Push(i.ToString());}}///清空publicvoidClear(){for(inti=BG.transform.childCount-1;i>-1;i--){Destroy(NodeList[i].gameObject);stack.Clear();}stack.Clear();}5.3.2入栈的动态演示这里我们主要解决的问题是使用户能自定义入栈的个数,创建时结点从栈的入口进入的动态演示结点时交箭头的变动指向,在插入一个或多个栈结点以后,箭头能指向正确的后继结点。核心代码实现如下:publicvoidStackAdd(){GameObjects=Instantiate(NodesImage).gameObject;s.transform.SetParent(BG);NodeList.Add(s.transform);s.GetComponent<InputField>().text=AddNode.text;queue.Push(s.ToString());s.transform.DOLocalMove(newVector2(-293f,NodeList[NodeList.Count-2].localPosition.y+100),MoveSpeed);NodeList[NodeList.Count-2].GetChild(2).transform.DOScaleX(Max,1);}5.3.3出栈的动态演示这里我们主要解决的问题是栈中删除结点的个数,删除结点时交箭头的变动指向,在删除一个或多个结点以后,还需考虑被删除结点图标的隐藏问题。核心代码实现如下:publicvoidRemoveStack(){NodeList[NodeList.Count-2].GetChild(2).transform.DOScaleX(0,1);Invoke("Donghua",1f);}voidDonghua(){NodeList[NodeList.Count-1].DOLocalMoveX(0f,MoveSpeed).OnComplete(()=>{NodeList[NodeList.Count-1].DOLocalMoveY(1400f,MoveSpeed).OnComplete(()=>{queue.Pop();NodeList.Remove(NodeList[NodeList.Count-1]);for(inti=0;i<NodeList.Count;i++)}}});;});}5.4队列模块编码栈模块主要实现队列的创建、入队和出队操作,以及对主菜单界面的调用(即返回)。5.4.1队列的创建动态演示这里我们主要解决的问题是队列创建的结点个数、队列的样式、及创建时结点从队列的入口进入的动态演示以及在队列中创建一个或多个结点以后,箭头能指向正确的后继结点。核心代码实现如下:publicvoidStartGame(){if(string.IsNullOrEmpty(Content.text)||Content.text==null){Content.text=Content.transform.Find("Placeholder").GetComponent<Text>().text;}else{}score=int.Parse(Content.text);for(inti=0;i<score;i++){GameObjects=Instantiate(NodesImage).gameObject;s.transform.SetParent(BG);s.transform.position=newVector2(272.5f,1400);NodeList.Add(s.transform);queue.Enqueue(i);}foreach(intvalueinqueue){Debug.Log(value);}}5.4.2入队的动态演示这里我们主要解决的问题是使用户能自定义入队的个数,创建时结点从栈的入口进入的动态演示结点时交箭头的变动指向,在插入一个或多个队列结点元素以后,箭头能指向正确的后继结点。核心代码实现如下:publicvoidQueueAdd(){GameObjects=Instantiate(NodesImage).gameObject;s.transform.SetParent(BG);NodeList.Add(s.transform);s.GetComponent<InputField>().text=AddNode.text;queue.Enqueue(s);s.transform.DOLocalMove(newVector2(-293f,NodeList[NodeList.Count-2].localPosition.y+100),MoveSpeed);NodeList[NodeList.Count-2].GetChild(2).transform.DOScaleX(Max,1);}5.4.3出队的动态演示这里我们主要解决的问题是队列中删除结点的个数,删除结点时交箭头的变动指向,在删除一个或多个结点以后,还需考虑被删除结点图标的隐藏问题。核心代码实现如下:publicvoidRemoveQueue(){NodeList[0].GetChild(2).transform.DOScaleX(0,1);queue.Dequeue();Invoke("Donghua",1f);}voidDonghua(){NodeList[0].DOLocalMoveX(0,MoveSpeed).OnComplete(()=>{NodeList[0].DOLocalMoveY(1400,MoveSpeed).OnComplete(()=>{for(inti=0;i<NodeList.Count;i++){if(i>=NodeList.Count-1){NodeList.Remove(NodeList[i]);return;}Debug.Log(i);NodeList[i]=NodeList[i+1];NodeList[i].position=newVector2(NodeList[i].position.x,NodeList[i].position.y-100);}});});}5.5二叉树模块二叉树模块主要实现二叉树的创建和二叉树的遍历(包括前序、中序和后序遍历)操作,以及对主菜单界面的调用(即返回)。5.5.1二叉树的创建这里我们主要解决的问题是二叉树创建的结点个数、创建时结点之间的链接关系后以及箭头能指向正确的后继结点。核心代码实现如下:publicvoidThreeButton(){TreeList[0].DOScale(Max,MoveSpeed).OnComplete(()=>{TreeList[0].GetChild(1).DOScaleY(Max,MoveSpeed).OnComplete(()=>{TreeList[1].DOScale(Max,MoveSpeed).OnComplete(()=>{TreeList[0].GetChild(2).DOScaleY(Max,MoveSpeed).OnComplete(()=>{TreeList[2].DOScale(Max,MoveSpeed).OnComplete(()=>{TreeList[1].GetChild(1).DOScaleY(Max,MoveSpeed).OnComplete(()=>{TreeList[3].DOScale(Max,MoveSpeed).OnComplete(()=>{TreeList[1].GetChild(2).DOScaleY(Max,MoveSpeed).OnComplete(()=>{TreeList[4].DOScale(Max,MoveSpeed).OnComplete(()=>{TreeList[2].GetChild(1).DOScaleY(Max,MoveSpeed).OnComplete(()=>{TreeList[5].DOScale(Max,MoveSpeed).OnComplete(()=>{TreeList[2].GetChild(2).DOScaleY(Max,MoveSpeed).OnComplete(()=>{TreeList[6].DOScale(Max,MoveSpeed).OnComplete(()=>{、});});});});5.5.2二叉树的各种遍历算法(前序、中序和后序)这里我们主要解决的问题是使用户能自定义二叉树中树节点的个数以及选择遍历的类型。核心代码实现如下:6系统测试6.1系统常用测试方法一般来说,软件产品的测试一般有如下两种方法:一种是已经对产品拥有的功能有所了解,则可以检验是否每个功能都可以正常使用。这种方法称为黑盒测试。它主要关注程序或系统的外部结构,而忽略其内部逻辑结构,重点在于软件界面和软件功能方面进行测试。另一种程序测试方法是白盒测试。与黑盒测试法不同,进行白盒测试的前提是可以将程序看成装在一个透明的盒子,因而对于测试者,他完全熟悉程序的结构和处理算法。白盒测试又可以称为结构测试。6.2测试范围和主要内容下表说明对本系统测试的重点的几个算法测试用例的范围与内容:测试范围主要测试内容单链表单链表的创建演示验证验证结点生成与连接创建过程单链表的插入演示验证验证结点插入原有链表过程单链表的删除演示验证验证结点在原有链表中删除过程队列与栈栈(队列)的创建演示验证验证栈(队列)中结点生成与连接创建过程入栈(队)的演示验证验证栈(队列)中结点插入原有栈(队列)过程出栈(队)的演示验证验证栈(队列)中结点在原有栈(队列)中删除过程二叉树二叉树的创建演示验证验证二叉树创建中的结点生成与连接创建过程二叉树的遍历演示验证(包括前序、中序、后序遍历)验证二叉树遍历过程中的结点的不同生成过程6.3测试用例为测试软件中的各个功能,黑盒测试需发现以下几类的遗漏、错误的功能:功能不正确或者出现了遗漏的功能界面错误数据结构或外部数据访问错误性能错误初始化或终止错误综上,我们可按照相关系统的功能说明运行系统,通过系统的输入等提示,输入几组有测试意义的数据用例(数据需在系统设定的范围之内),对系统的功能进行测试,测试结果如下表所示:序号测试内容测试数据期望结果1单链表创建算法3创建带有3个结点的单链表2单链表插入算法2,3在2位置处插入3个结点3单链表删除算法4栈创建算法3从栈口依次进入3个栈结点5入栈算法3,1创建一个结点为3的栈,然后从栈口进入1个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广西(北海市)高校毕业生“三支一扶”计划招募92人笔试模拟试题及答案详解
- 2026年南昌市新建区招聘巡逻防控队员120人考试模拟试题及答案详解
- 2026年6月沧州人才咨询服务中心有限责任公司招录劳务派遣制人员1人考试参考题库及答案详解
- 2026湖北襄高控股发展有限公司招聘7人考试模拟试题及答案详解
- 2026湖南株洲市图书馆见习岗位招聘1人考试备考试题及答案详解
- 2026年西宁市城中区人民医院医护人员招聘笔试备考题库及答案详解
- 2026年东营市教育局局属部分学校公开招聘教师(13人)笔试模拟试题及答案详解
- 2026年绍兴嵊州市水务集团下属嵊州市润蓝建设有限公司公开招聘工作人员5人考试模拟试题及答案详解
- 2026四川达州市天立学校教师招聘考试参考题库及答案详解
- 2026年6月四川民族学院考核招聘博士辅导员12人笔试备考试题及答案详解
- 医疗销售提成激励方案(3篇)
- 【真题】江苏省扬州市2025年中考物理试卷(含答案解析)
- 月相观测活动方案
- 施工进度计划编排
- 投标文件编制培训
- 药厂厂房设施管理制度
- 乡镇应急物资管理制度
- 招投标过程中的策略与技巧
- 2025新SA8000全套社会责任管理手册及程序文件
- 选厂合作协议书合同
- 国企审计考试试题及答案
评论
0/150
提交评论