《数据结构》实验指导书 广东工业大学信息工程学院
- 格式:docx
- 大小:304.68 KB
- 文档页数:17
数据结构实验指导书前言《数据结构》是软件工程等专业的一门核心基础课程,也是很多高校考研专业课之一。
它主要介绍线性结构、树结构、图结构三种逻辑结构元素的存储实现,在此基础上介绍一些典型算法及时、空效率分析。
这门课程的主要任务是培养学生的算法设计能力及良好的程序设计习惯。
通过学习,要求学生能够掌握典型算法的设计思想及程序实现,能够根据实际问题选取合适的存储方案,设计出简洁、高效、实用的算法,为后续课程的学习及软件开发打下良好的基础。
学习这门课程,习题和实验是两个关键环节。
学生理解算法,上机实验是最佳的途径之一。
因此,实验环节的好坏是学生能否学好《数据结构》的关键。
为了更好地配合学生实验,特编写实验指导书。
一、实验目的更好的理解算法的思想、培养算法设计、分析及程序调试能力。
二、实验要求1、每次实验前学生必须根据试验内容认真准备实验程序及调试时所需的输入数据及预期输出数据。
2、独立完成或在指导教师的帮助下,完成实验项目,得出正确的实验结果。
3、遵守实验室规章制度、不缺席、按时上、下机。
4、实验学时内必须做数据结构的有关内容,不允许上网聊天或玩游戏,如发现上述现象,取消本次上机资格,平时成绩扣10分。
5、实验项目有一次未完成,扣5分,两次以上未完成者,平时成绩以零分记,不允许参加期末考试。
三、实验环境 VC++6.0或其它C++集成环境四、说明1、本实验的所有算法中元素类型可以根据实际需要选择。
2、实验题目中带*者为较高要求,学生可自选;其余部分为基本内容,必须完成,否则实验不合格。
3、数据结构是很多高校的硕士研究生入学考试的专业课之一,希望有志于考研的学生能够在学习过程中注意各种算法的理解,以便为考研做一定的准备。
4、所有实验项目布置在在线评测系统平台(Online Judge System)上,校内访问IP:59.73.73.133,每位学生需实名注册账号,并将完成的实验项目在平台上提交,平台能够实现自动评测。
《数据结构》实验指导书(适用于计算机应用、软件技术专业)信息工程系目录前言 (3)实验一、单链表的基本操作......................................................................... 错误!未定义书签。
实验二栈和队列........................................................................................... 错误!未定义书签。
实验三串....................................................................................................... 错误!未定义书签。
实验四二叉树的遍历................................................................................... 错误!未定义书签。
实验五树的应用........................................................................................... 错误!未定义书签。
实验六图....................................................................................................... 错误!未定义书签。
实验七、折半查找和二叉排序树................................................................. 错误!未定义书签。
实验八、内部排序......................................................................................... 错误!未定义书签。
数据结构实验指导书适用所有开设数据结构实验的专业雷文赵攀编写概述一、课程目的《数据结构》是一门实践性很强的软件基础课程,为了学好这门课,每个学生必须完成一定数量的上机作业。
通过本课程的上机作业,要求在数据结构的选择和应用、算法的设计及实现等方面加深对课程基础内容的理解,同时,实验题中的问题比平时的练习题要复杂,也更接近实际,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
本课程实验的目的是旨在使学生进一步巩固课堂上所学的理论知识;深化理解和灵活掌握教学内容;培养学生算法设计的能力和解决实际问题的程序设计的能力。
二、实验名称与学时分配三、实验要求⒈问题分析充分地分析和理解问题本身,弄清要求做什么,包括功能要求、性能要求、设计要求和约束以及基本数据特性,数据间的联系等。
⒉数据结构设计针对要求解决的问题,考虑各种可能的数据结构,并且力求从中出最佳方案(必须连同算法一起考虑),确定主要的数据结构及全程变量。
对引入的每种数据结构和全程变量要详细说明其功能、初值和操作特点。
⒊算法设计算法设计分概要设计和详细设计,概要设计着重解决程序的模块设计问题,这包括考虑如何把被开发的问题程序自顶向下分解成若干顺序模块,并决定模块的接口,即模块间的相互关系以及模块之间的信息交换问题.详细设计则要决定每个模块内部的具体算法,包括输入、处理和输出,采用类C语言描述。
⒋测试用例设计准备典型测试数据和测试方案,测试数据要有代表性、敏感性,测试方案包括模块测试和模块集成测试。
⒌上机调试对程序进行编译,纠正程序中可能出现的语法错误,测试前,先运行一遍程序看看究竟将会发生什么,如果错误较多,则根据事先设计的测试方案并结合现场情况进行错误跟踪,包括打印执行路径或输出中间变量值等手段。
三、实验考核每次实验结束后,均应上交实验报告。
数据结构课程实验成绩单独考核,占1个学分。
实验报告应包括如下内容:1、问题描述:简述题目要解决的问题是什么。
《数据结构》实验指导书第一部分前言一、实验的目的《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。
本课程的另一重要教学目的是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,要做到这一点,上机实习是必须的。
数据结构实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验课题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,训练学生实际动手进行程序设计和调试程序的能力,加深对数据结构相关概念和算法的理解。
通过完成本实验课程的实验,学生应学会并掌握本课程的基本和重点知识,深刻理解逻辑结构、物理结构和算法设计之间的关系,初步学会算法分析的方法,并能在一定范围内运用所掌握的分析方法进行算法分析,培养软件工作所需要的动手能力和作为一个软件工作者所应具备的科学工作方法和作风。
二、实验前的准备工作1.每个学生需配备一台计算机,操作系统需Windows2000/XP以上版本,软件需Visual C++6.0以上版本。
2.实验前要求学生按实验要求编写好相关实验程序,准备上机调试运行。
三、实验的步骤(一)建立一个文件夹,如“数据结构”,用来存放自己的所有实验程序,在该文件夹中建立子目录用来存放每个项目(一个子目录一个项目),如“顺序表”,项目中需要的所有文件都存在该文件夹中。
(二)新建一个项目文件1.双击Visual C++ 6.0快捷图标,进入Visual C++ 6.0集成开发环境;或者点击“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”进入Visual C++ 6.0集成开发环境。
2.单击“File”菜单,选择“New”命令3.创建一个项目文件并保存在项目所在文件夹中;3. 创建源程序文件并保存在项目所在文件夹中;4.输入源程序;5.单击“保存”按钮保存源程序。
《数据结构》实验指导书软件学院2011年9月概述实习目的和要求《数据结构》在计算机科学中是一门实践性较强的专业基础课, 上机实习是对学生的一种全面综合训练, 是与课堂听讲、自习和练习相辅相成的必不可少的一个教学环节。
实习着眼于原理与应用的结合, 使学生学会把学到的知识用于解决实际问题, 起到深化理解和灵活掌握教学内容的目的。
同时, 通过本课程的上机实习, 使学生在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
实习包括的步骤1. 简要描述题目要求, 对问题的描述应避开算法及所涉及的数据类型, 只是对所需完成的任务做出明确的陈述, 例如输入数据的类型、值的范围以及输入的形式, 输出数据的类型、值的范围以及输出的形式。
2. 选定数据结构, 写出算法, 根据自顶向下发展算法的方法, 首先描述算法的基本思想, 然后进行算法细化, 再对所设计的算法的时间复杂性和空间复杂性进行简单分析。
3. 准备好上机所需的程序, 选定一种程序设计语言(如C 语言), 手工编好上机程序, 并进行反复检查, 使程序中的逻辑错误和语法错误减少到最低程度。
对程序中有疑问的地方, 应做出标记, 以便在上机时给予注意。
4.上机输入和调试程序, 在调试程序过程中除了系统的问题以外, 一般应自己独立解决。
在程序调试通过后, 打印输出程序清单和运行结果。
5.上机结束后, 总结和整理实习报告。
实习报告的内容1.简述题目要解决的问题是什么, 并说明输入和输出数据的形式。
2.简述存储结构和算法的基本思想。
3.列出调试通过的源程序。
4.列出上面程序对应的运行结果。
分析程序的优缺点、时空性能以及改进思想, 写出心得体会。
实验一线性表一. 目的与要求本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现, 提高分析和解决问题的能力。
要求仔细阅读并理解下列例题, 上机通过, 并观察其结果, 然后独立完成后面的实习题。
《数据结构》实验指导书实验一线性表【实验目的】1、掌握用Turbo c上机调试线性表的基本方法;2、掌握线性表的基本操作,插入、删除、查找以及线性表合并等运算在顺序存储结构和链式存储结构上的运算;3、运用线性表解决线性结构问题。
【实验学时】4 学时【实验类型】设计型【实验内容】1、顺序表的插入、删除操作的实现;2、单链表的插入、删除操作的实现;3、两个线性表合并算法的实现。
(选做)【实验原理】1、当我们在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表中第i个元素之后的所有元素依次后移一个位置,以便腾出一个位置,再把新元素插入到该位置。
若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置;2、当我们在线性表的链式存储结构上的第i个位置上插入一个元素时,只需先确定第i个元素前一个元素位置,然后修改相应指针将新元素插入即可。
若是欲删除第i个元素时,也必须先确定第i个元素前一个元素位置,然后修改相应指针将该元素删除即可;3、详细原理请参考教材。
【实验步骤】一、用C语言编程实现建立一个顺序表,并在此表中插入一个元素和删除一个元素1、通过键盘读取元素建立线性表;2、指定一个元素,在此元素之前插入一个新元素;3、指定一个元素,删除此元素。
二、用C语言编程实现建立一个单链表,并在此表中插入一个元素和删除一个元素1、通过键盘读取元素建立单链表;2、指定一个元素,在此元素之前插入一个新元素;3、指定一个元素,删除此元素。
三、用C语言编程实现两个按递增顺序排列线性表的合并1、编程实现合并按递增顺序排列的两个顺序表算法;2、编程实现合并按递增顺序排列的两个单链表算法。
【思考问题】结合实验过程,回答下列问题:1、何时采用顺序表处理线性结构的问题为最佳选择;2、何时采用链表处理线性结构的问题为最佳选择。
【实验报告要求】1、根据对线性表的理解,如何创建顺序表和单链表;2、实现顺序表插入和删除操作的程序设计思路;3、实现链表插入和删除操作的程序设计思路;4、实现两表合并操作的程序设计思路;5、调试程序过程中遇到的问题及解决方案;6、本次实验的结论与体会。
数据结构实验指导书一、实验目的《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。
本课程较为系统地论述了软件设计中常用的数据结构以及相应的存储结构与实现算法,并做了相应的性能分析和比较,课程内容丰富,理论系统。
本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
由于以下原因,使得掌握这门课程具有较大的难度:1)理论艰深,方法灵活,给学习带来困难;2)内容丰富,涉及的知识较多,学习有一定的难度;3)侧重于知识的实际应用,要求学生有较好的思维以及较强的分析和解决问题的能力,因而加大了学习的难度;根据《数据结构》课程本身的特性,通过实验实践内容的训练,突出构造性思维训练的特征,目的是提高学生分析问题,组织数据及设计大型软件的能力。
课程上机实验的目的,不仅仅是验证教材和讲课的内容,检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:(1)加深对课堂讲授内容的理解实验是对学生的一种全面综合训练。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变"活",起到深化理解和灵活掌握教学内容的目的。
不少学生在解答习题尤其是算法设计时,觉得无从下手。
实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。
(2)培养学生软件设计的综合能力平时的练习较偏重于如何编写功能单一的"小"算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
数据结构实验指导书数据结构实验指导书目录数据结构实验指导书 (1)目录 (1)实验指导书概述 (2)实验题目 (3)实验一单链表的插入、删除 (3)[实验目的] (3)[实验内容] (3)[测试数据] (3)[实现提示] (3)实验二栈及其应用 (5)[实验目的] (5)[实验内容] (5)[测试数据] (5)实验三二叉树的递归算法 (5)[实验目的] (5)[实验内容] (6)[测试数据] (6)实验四查找及排序算法的应用 (7)[实验目的] (7)[实验内容] (7)[测试数据] (7)实验指导书概述“数据结构”是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。
本课程系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了多种常用的查找和排序技术,并对其进行了性能分析和比较,内容非常丰富。
本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
由于以下原因,使得掌握这门课程具有较大难度:∙内容多,时间短,给学习带来困难;∙贯穿全书的动态链表存储结构和递归技术是学习中的重点和难点;∙隐含在各部分的技术和方法丰富,也是学习的重点和难点;∙先修课程中所介绍的专业性知识不多,加大了学习难度。
由于数据结构课程的技术性与实践性,《数据结构课程实验》的设置十分必要。
为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。
数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。
在掌握基本算法的基础上,掌握分析、解决实际问题的能力。
通过实验实践内容的训练,突出构造性思维训练的特征, 提高学生组织数据及编写大型程序的能力。
《数据结构》课程实验指导《数据结构》实验教学大纲课程代码:0806523006 开课学期:3 开课专业:信息管理与信息系统总学时/实验学时:64/16 总学分/实验学分:3.5/0.5一、课程简介数据结构是计算机各专业的重要技术基础课。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。
数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。
通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。
另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。
另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。
三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。
具体实验要求如下:1.问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。
2.数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。
对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。
《数据结构》实验指导书广东工业大学信息工程学院下面介绍一下数据结构实验环境的启动,教材里的算法使用类C语言描述,具体实现需要支持ANSI C++标准的编译器。
考虑到同学们的基础和使用习惯,我们利用Windows环境下的Visual C++来进行实验。
首先启动Visual C++,从开始——程序——Visual C++,启动好Visual C++界面如图1所示:点击菜单“文件”出现下拉菜单,选择“新建”,如下图:在上面的界面里,我们选择Win32 Console Application选项,并在工程栏目里输入一个文件名,位置根据自己的保存路径设置即可,确定后回车,出现如下界面:再点击完成,出现下面的界面:点击“OK”,出现如下界面:在上面界面里,我们开始做实验时,只要通过“文件”菜单来添加源文件或头文件进入到程序编辑状态,如下图所示:点击“OK”后进行程序编辑窗口,如下所示:这时就可以编辑程序了。
实验时将头文件(.h后缀文件)放在header files 里,而源文件(.cpp后缀文件)放在source files里进行编辑调试。
实验一:线性表的存储结构与顺序表的存储实现实验内容:编写一个程序实现两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结果放在第一个顺序表中。
实验目的:了解并掌握线性表的逻辑结构特性,通过实验掌握顺序存储结构的描述方法及用高级语言进行编程实现的方法。
实验步骤:1.定义顺序表类型和结构:首先要想好自己定义的顺序表叫什么名称,顺序表结构里包括有什么项目,每一项该是什么类型,如:typedefstruct{ElemType *elem;int length;intlistsize;} SqList;2.将定义好的顺序表初始化,如:Status InitList_Sq(SqList&L){L.elem=(ElemType )malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;return OK;}3.创建顺序表,如:void Create_Sq(SqList&L){ //创建顺序表inti,n;printf("创建一个有序表:\n");printf("输入有序表中元素的个数:");scanf("%d",&n);L.length=n;for(i=0;i<n;i++){printf("输入第%d个元素的值:",i+1);scanf("%d",&L.elem[i]);printf("\n");}}4.编写顺序表的元素输出函数voidDisp_Sq(SqList L){inti,n;n=L.length;for(i=0;i<n;i++)printf("%5d",L.elem[i]);printf("\n");}5.编写合并程序,实现题目要求的合并功能void Combine(SqList&La, SqList&Lb){//把两个有序表合为一个函数体请同学们自己编}实验二:栈和队列的应用一、实验目的熟练掌握栈结构及其应用二、实验内容利用栈结构具有先进后出的特性,编程实现:输入一个任意十进制数,转换八进制数进行输出。
1、定义栈结构,如:#define stack_size 100#define stackincrement 10typedefstruct{int *base;int *top;intstacksize;}SqStack;2.设计基本算法1)对栈进行初始化:Status InitStack (SqStack&S) {//构造一个空栈S.base = (Selemtype *)malloc(stack_size * sizeof(ElemType));if (!S.base) exit (OVERFLOW);S.top = S.base;S.stacksize = stack_size;return OK;}//InitStack2) 返回栈顶函数:Status GetTop(SqStackS,Selemtype&e){//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR if (S.top ==S.base) return ERROR;e = *(S.top-1);return OK;}// GetTop3)入栈函数Status Push (SqStack&S,Selemtype e) {//插入元素e为新的栈顶元素if (S.top - S.base>=S.stacksize){//栈满,追加存储空间S.base = (ElemType*)realloc (S.base,(S.stacksize + stackincrement) * sizeof (ElemType));if (!S.base) exit (OVERFLOW);//存储分配失败S.top = S.base+S.stacksize;S.stacksize +=stackincrement;}*S.top++=e;return OK;}//Push4)栈空处理函数Status StackEmpty(SqStack&S){if (S.base == S.top) return OK;else return ERROR;} // StackEmpty5)出栈函数Status Pop(SqStack&S,Selemtype&e){//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK//,否则返回ERRORif (S.top==S.base) return ERROR;e=*--S.top;return OK;}//Pop6)设计数制转换算法,编写转换函数conversion().void conversion(structSqStack&S){数制转换算法由同学们自己完成}实验三:二叉树的构造与遍历方法一、实验目的通过实验能熟练掌握二叉树的定义、性质和存储结构;二叉树的遍历和线索以及遍历算法的各种描述形式。
二、实验内容用先序次序的方法构造一棵二叉树,并以三种遍历方式遍历二叉树。
三、实验步骤1、定义二叉树和用先序次序构造二叉树。
typedefstructBiTNode{//注意采用的是二叉链表作为二叉树的存储结构TElemType data;structBiTNode *lchild,*rchild;}BiTNode,*BiTree;Status CreateBiTree_PreOrder(BiTree&T){ //先序次序构造二叉树TElemTypech;scanf("%c",&ch);if(ch==' ') T=NULL;else {if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(OVERFLOW);T->data=ch;CreateBiTree_PreOrder(T->lchild);CreateBiTree_PreOrder(T->rchild);}return OK;}2、根据先序遍历、中序遍历和后序遍历的方法编序相应的函数,如:Status PreOrderTraverse(BiTree T, Status(*Visit)(TElemType e)){ //先序遍历if(T){if((*Visit)(T->data))if(PreOrderTraverse(T->lchild,Visit))if(PreOrderTraverse(T->rchild,Visit))return OK;return ERROR;}return OK;}Status InOrderTraverse(BiTree T, Status (*Visit)(TElemType e)){ //中序遍历if(T!=NULL){if(InOrderTraverse(T->lchild,Visit))if((*Visit)(T->data))if(InOrderTraverse(T->rchild,Visit))return OK;return ERROR;}else return OK;}Status PostOrderTraverse(BiTree T, Status(*Visit)(TElemType e)){ //后序遍历if(T!=NULL){if(PostOrderTraverse(T->lchild,Visit))if(PostOrderTraverse(T->rchild,Visit))if((*Visit)(T->data))return OK;return ERROR;}else return OK;}3.编写各种遍历后的输出函数,如:Status Disp(TElemType e){ //输出各结点的数据值printf("%3c",e);return OK;}4.编写主函数调用以上各子函数,并调试程序以实现实验要求的各种遍历。
实验三图的遍历实验实验内容:从某个顶点出发,沿着某条搜索路径对图中所有顶点各作一次访问,试用程序完成图的遍历实验。
步骤:1.任务分析图有遍历是从图中某个顶点出发,沿某条搜索路径对图中的所有结点进行访问,而且仅访问一次。
遍历的流程图如图3.1所示,根据搜索的不同规则,遍历图的方法分为两种:深度优先遍历(DFS)和广度优先遍历(BFS)。
2.程序构思深度优先遍历其算法基本思想是:(1)选择一个起始点v0出发,并访问之;(2)依次从v0的未访问过的邻接点出发,深度优先遍历图,直到图中与v0有路径相通的顶点都被访问过为止;(3)如此时图中尚有顶点未被访问过,则另选图中一个未访问过的顶点作起始点,重复上述步骤过程,直到所有顶点都被访问过为止。
用流程图表示,如图3.2所示。
广度优先遍历其基本思想是:(1)选择一个起始点v0,并访问之;(2)从v0出发,依次访问v0的未被访问过的邻接顶点v1,v2,….v k,然后依次从v1,v2,….v k出发,访问各自来被访问过的邻接顶点;(3)重复步骤(2)直到所有顶点都被访问过为止。