《数据结构》实验指导V4
数据结构实验指导书

《数据结构》实验指导书实验一、顺序表实验目的:熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作。
实验要求:了解并熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作的实现和应用。
实验内容:编写程序实现下列的要求:(1) 设数据元素为整数,实现这样的线性表的顺序存储表示。
(2) 键盘输入10个数据元素,利用顺序表的基本操作,建立该表。
(3) 利用顺序表的基本操作,找出表中的最大的和最小的数据元素(用于比较的数据元素为整数)。
(4) * 若数据元素为学生成绩(含姓名、成绩等字段),重新编程,实现上面的要求。
要求尽可能少地修改前面的程序来得到新程序。
(这里用于比较的字段为分数)练习及思考题:(1)顺序表的操作上有什么特点?(2)不固定数据元素的个数,而通过特殊数据来标记输入数据的结束,实现这样的输入操作。
实验二、链表实验目的:熟悉链式表的逻辑特性、存储表示方法的特点和链式表的基本操作。
实验要求:了解并熟悉链式表的逻辑特性、存储表示方法和链式表的基本操作的实现和应用。
实验内容:编写程序实现下列的要求:(1) 设学生成绩表中的数据元素为学生成绩(含姓名、成绩字段),实现这样的线性表的链式存储表示。
(2) 键盘输入若干个数据元素(用特殊数据来标记输入数据的结束),利用链表的基本操作(前插或后插算法),建立学生成绩单链表。
(3) 键盘输入关键字值x,打印出表中所有关键字值<=x的结点数据。
(用于比较的关键字字段为分数)。
(4) 输入关键字值x,删除表中所有关键字值<=x的结点。
(用于比较的关键字字段为分数)。
练习及思考题:(1)不同类型的数据元素所对应的链式表在类型定义和操作实现上有什么异同?(2)有头结点的链式表,有什么特点?实验三、栈的应用实验目的:熟悉栈的逻辑特性、存储表示方法和栈的基本操作。
实验要求:了解并熟悉栈的逻辑特性、顺序和链式存储表示方法和栈的基本操作的实现和应用。
实验内容:(1) 判断一个表达式中的括号(仅有一种括号,小、中或大括号)是否配对。
数据结构实验指导书

数据结构实验指导书一、实验目的数据结构是计算机科学中的重要基础课程,通过实验,旨在帮助学生更好地理解和掌握数据结构的基本概念、原理和算法,提高学生的编程能力和问题解决能力。
具体而言,实验的目的包括:1、加深对常见数据结构(如数组、链表、栈、队列、树、图等)的理解,掌握其特点和操作方法。
2、培养学生运用数据结构解决实际问题的能力,提高算法设计和程序实现的能力。
3、增强学生的逻辑思维能力和调试程序的能力,培养学生的创新意识和团队合作精神。
二、实验环境1、操作系统:Windows 或 Linux 操作系统。
2、编程语言:C、C++、Java 等编程语言中的一种。
3、开发工具:如 Visual Studio、Eclipse、Code::Blocks 等集成开发环境(IDE)。
三、实验要求1、实验前,学生应认真预习实验内容,熟悉相关的数据结构和算法,编写好实验程序的代码框架。
2、实验过程中,学生应独立思考,认真调试程序,及时记录实验过程中出现的问题及解决方法。
3、实验完成后,学生应撰写实验报告,包括实验目的、实验内容、实验步骤、实验结果、问题分析与解决等。
四、实验内容(一)线性表1、顺序表的实现与操作实现顺序表的创建、插入、删除、查找等基本操作。
分析顺序表在不同操作下的时间复杂度。
2、链表的实现与操作实现单链表、双向链表的创建、插入、删除、查找等基本操作。
比较单链表和双向链表在操作上的优缺点。
(二)栈和队列1、栈的实现与应用实现顺序栈和链式栈。
利用栈解决表达式求值、括号匹配等问题。
2、队列的实现与应用实现顺序队列和链式队列。
利用队列解决排队问题、广度优先搜索等问题。
(三)树1、二叉树的实现与遍历实现二叉树的创建、插入、删除操作。
实现二叉树的前序、中序、后序遍历算法,并分析其时间复杂度。
2、二叉搜索树的实现与操作实现二叉搜索树的创建、插入、删除、查找操作。
分析二叉搜索树的性能。
(四)图1、图的存储结构实现邻接矩阵和邻接表两种图的存储结构。
《数据结构》实验指导书(C语言版2014上半年改).

《数据结构》课程实验指导《数据结构》实验教学大纲课程代码:0806523006 开课学期:3 开课专业:信息管理与信息系统总学时/实验学时:64/16 总学分/实验学分:3.5/0.5一、课程简介数据结构是计算机各专业的重要技术基础课。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。
数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。
通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。
另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。
另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。
三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。
具体实验要求如下:1.问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。
2.数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。
对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。
数据结构实验指导书(国教)

南昌工程学院《数据结构》实验指导书10计算机应用技术(中韩)(专)徐晨光编2012 年 2月目录实验一:C语言相关知识复习实验 (3)实验二:线性表实验 (4)实验三:栈和队列实验 (6)实验四:数组、串 (8)实验五:二叉树实验 (9)实验六:图 (12)实验七:查找实验 (13)实验八:排序 (14)实验一C语言相关知识复习实验一、实验目的巩固复习前期所学C语言的函数参数传递、指针和结构体等知识点,加强学习数据结构语言基础。
二、实验内容1.学生信息的显示,具体要求如下:1)定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址);2)设计一个函数,用于显示单个学生信息,函数的参数为前面定义的结构体类型;3)设计一个主函数,在主函数中输入学生的信息,并调用前面定义的函数进行显示(学生人数不少于5人)。
提示:可用结构体数组保存学生信息。
2. 输入若干个整数作为数组元素值,然后按输入时顺序的就地逆置排序,最后打印出逆置后的元素值。
要求用指针和动态内存分配方法实现。
例如输入:10 2 30 4 5,逆置后显示为:5 4 30 2 10。
提示:1.逆置的方法:设有n个数据元素a(0),a(1),a(2)…….,a(n-1),将第i个元素与第n-i-1个元素调换位置即可。
2.采用动态内存分配方法可参考如下代码int *a;int i;a=(int *)malloc(N*sizeof(int));//动态分配起始地址for(i=0;i<N;i++){ scanf("%d",&a[i]);}//给内存空间赋值三、实验源代码此处写程序源代码,请在程序中适当注释,便于老师更快地看懂你的程序。
四、实验结果此处写出程序运行的结果,即输入数据是什么,输出数据是什么,分析结果是否正确,如果不正确是什么原因。
实验二线性表实验一、实验目的1、掌握建立顺序表的基本方法。
2、理解和掌握顺序表元素查找算法。
数据结构课程实验指导书

《数据结构》实验指导书第一部分前言一、实验的目的《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。
本课程的另一重要教学目的是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,要做到这一点,上机实习是必须的。
数据结构实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验课题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,训练学生实际动手进行程序设计和调试程序的能力,加深对数据结构相关概念和算法的理解。
通过完成本实验课程的实验,学生应学会并掌握本课程的基本和重点知识,深刻理解逻辑结构、物理结构和算法设计之间的关系,初步学会算法分析的方法,并能在一定范围内运用所掌握的分析方法进行算法分析,培养软件工作所需要的动手能力和作为一个软件工作者所应具备的科学工作方法和作风。
二、实验前的准备工作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.列出上面程序对应的运行结果。
分析程序的优缺点、时空性能以及改进思想, 写出心得体会。
实验一线性表一. 目的与要求本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现, 提高分析和解决问题的能力。
要求仔细阅读并理解下列例题, 上机通过, 并观察其结果, 然后独立完成后面的实习题。
数据结构-实验指导书
《数据结构》实验指导书计算机专业实验中心编2020年7月25日目录《数据结构》上机实验内容和要求............................. 错误!未定义书签。
实验一、顺序表的实现及应用................................. 错误!未定义书签。
实验二、链表的实现及应用................................... 错误!未定义书签。
实验三、栈的实现及应用..................................... 错误!未定义书签。
实验四、队列的实现及应用................................... 错误!未定义书签。
实验五、二叉树操作及应用................................... 错误!未定义书签。
实验六、图的遍历操作及应用................................. 错误!未定义书签。
实验七、查找算法的实现..................................... 错误!未定义书签。
实验八、排序算法的实现..................................... 错误!未定义书签。
《数据结构》上机实验内容和要求通过上机实验加深对课程内容的理解,增加感性认识,提高程序设计、开发及调试能力。
本实验指导书适用于16学时《数据结构》实验课,实验项目具体内容如下:实验报告要求请按照实验教师要求,按时提交实验报告电子版文件。
实验报告格式可个性化定义,内容包括但不限于以下内容:1、题目、姓名、学号、班级(首页)2、需求分析:陈述程序设计的任务,强调程序要做什么,明确规定:(1)输入的形式和输出值的范围;(2)输出的形式;(3)程序所能达到的功能;(4)测试数据:包括正确的输入输出结果和错误的输入及输出结果。
3、概要设计:说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。
数据结构实验指导书(本科正式)
《数据结构》实验指导书实验一线性表【实验目的】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、本次实验的结论与体会。
《数据结构》实验指导
《数据结构》实验指导《数据结构》C语言版实验指导目录《数据结构》上机实验的目的和要求 (1)实验一顺序结构线性表的实现 (3)实验二单链表的插入和删除 (16)实验三栈的实现 (24)实验四二叉树操作实现 (30)实验五哈夫曼树的建立与编码实现 (39)实验六图的遍历操作 (50)实验七排序 (67)实验八查找 (83)《数据结构》课程设计 (95)《数据结构》上机实验的目的和要求通过上机实验加深对课程内容的理解,增加感性认识,提高软件设计、编写及调试程序的能力。
要求所编的程序能正确运行,并提交实验报告。
实验报告的基本要求为:1、需求分析:陈述程序设计的任务,强调程序要做什么,明确规定:(1)输入的形式和输出值的范围;(2)输出的形式;(3)程序所能达到的功能;(4)测试数据:包括正确的输入输出结果和错误的输入及输出结果。
2、概要设计:说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。
3、详细设计:提交带注释的源程序或者用伪代码写出每个操作所涉及的算法。
4、调试分析:(1)调试过程中所遇到的问题及解决方法;(2)算法的时空分析;(3)经验与体会。
5、用户使用说明:说明如何使用你的程序,详细列出每一步操作步骤。
6、测试结果:列出对于给定的输入所产生的输出结果。
若有可能,测试随输入规模的增长所用算法的实际运行时间的变化。
实验一顺序结构线性表的实现一、目的:掌握顺序表的表示方法,存储结构及其基本操作的实现。
二、要求:建立一顺序表,实现其基本操作。
三、示例程序:说明:一个完整的程序是由输入,处理,输出三部分组成的,每个部分还可以分为若干小部分,如输入,又可以分为声明,初始化变量,接收数据,预处理数据等。
书上列出的算法是解决问题的基本思路,也可以是解决问题的处理过程,并未给出详细的输入与输出,这一部分需要在练习过程中加入,在解决实际问题时,还需要做灵活的处理。
C语言本身有自身的特点,其基本思想是与机器的指令码相关的。
《数据结构》实验指导书(新)
数据结构实验指导书实验一线性表[实验目的]1.了解顺序表的结构特点及有关概念,掌握顺序表建立、插入、删除的基本操作算法。
2.了解单链表的结构特点及有关概念,掌握单链表建立、插入、删除的基本操作算法。
[实验内容]1.顺序表的实践。
1)建立4个元素的顺序表list[]={2,3,4,5},实现顺序表建立的基本操作。
2)在list[]={2,3,4,5}的元素4和5之间插入一个元素9,实现顺序表插入的基本操作。
3)在list[]={2,3,4,9,5}中删除指定位置(i=3)上的元素9,实现顺序表的删除的基本操作。
2.单链表的实践。
1)建立一个包括头结点和3个结点的(4,2,1)的单链表,实现单链表建立的基本操作。
2)在已建好的单链表中的指定位置(x=2)插入一个结点3,实现单链表插入的基本操作。
3)在一个包括头结点和4个结点的(4,2,3,1)的单链表的指定位置删除一个结点,实现单链表删除的基本操作。
[实验要点及说明]线性表(linear list)是n(n≥0)个数据元素a1,a2,…a n组成的有限序列。
其中n 称为数据元素的个数或线性表的长度,当n=0时称为空表,n>0时称为非空表。
通常将非空的线性表记为(a1,a2,…,a n),其中的数据元素a i(1≤i≤n)是一个抽象的符号,a i是第i个数据元素,称i为数据元素a i在线性表中的位置。
其具体含义在不同情况下是不同的,即它的数据类型可以根据具体情况而定,本书中,我们将它的类型设定为elemtype,表示某一种具体的已知数据类型。
顺序表也称为线性表的顺序存储结构。
其存储方式为:在内存中用一组地址连续的存储单元依次存储线性表的数据元素,但该连续存储空间的大小要大于或等于顺序表的长度。
一般让线性表中第一个元素存放在连续存储空间第一个位置,第二个元素紧跟着第一个之后,其余依此类推。
可定义顺序表如下:#define maxnumelemtype list[maxnum];int num=-1;线性表的链式存贮结构,也称为链表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》实验指导书苏州大学应用技术学院2008年9月实验1.顺序表的实现1.1.目的1、熟悉实验环境2、理解顺序表的基本操作3、了解顺序表的建立和输出4、掌握顺序表的插入、删除、合并和归并等实现方法1.2.内容和要求1.2.1.基本要求1、.完成下列操作的实现,并上机调试通过Status ClearList(SqList &L); //置为空表Status ListEmpty(SqList L); //判是否为空表?int ListLength(SqList L); //求长度Status GetElem(SqList L,int i,ElemType &e); //取元素Status ListInsert(SqList &L,int i,ElemType e); //插入Status ListDelete(SqList &L,int i,ElemType &e); //删除2、文件路径和文件名文件路径:\DATA_ST\EX_01文件名: XX_EX_01.C 或XX_EX_01.CPP其中XX为学号的后两位文件开头部分内容应包含:班级、学号、姓名、日期和实际完成内容等信息。
1.2.2.扩展要求1、.完成下列操作的实现,并上机调试通过Status LocateElem(SqList L,ElemType e,Status compare()); //定位Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e); //求前驱Status NextElem(SqList L,ElemType cur_e,ElemType &next_e); //求后继Status ListUnion(SqList &La,SqList &Lb); //合并Status MergeList_Sq(SqList La, SqList Lb, SqList &Lc); //归并2、.优化下面的操作Status ListInput(SqList *L); //输入void VisitSqList(SqList L); //访问1.3.参考文件1.3.1.头文件(List.h)/*====================================Name : 数据结构--线性表头文件File : List.hComment: 用于定义线性表====================================*///== 1. 预定义常量和类型#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status; //Status是函数的类型,其值是函数结果状态代码。
typedef int ElemType; //定义数据元素类型取为 int//== 2. 定义顺序表#define LIST_INIT_SIZE 20 //线性表初始长度#define LISTINCREMENT 10 //用于动态分配的增量长度typedef struct{ElemType *elem; //存储空间基址int length; //当前长度int listsize; //当前分配的存储容量以一数据元素存储长度为单位}SqList;//== 3. 定义基本操作Status InitList(SqList *L); //初始化Status DestroyList(SqList &L); //销毁Status ListInput(SqList *L); //输入Status ClearList(SqList &L); //置为空表Status ListEmpty(SqList L); //判是否为空表?int ListLength(SqList L); //求长度Status GetElem(SqList L,int i,ElemType &e); //取元素Status LocateElem(SqList L,ElemType e,Status compare()); //定位Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e); //求前驱Status NextElem(SqList L,ElemType cur_e,ElemType &next_e); //求后继Status ListInsert(SqList &L,int i,ElemType e); //插入Status ListDelete(SqList &L,int i,ElemType &e); //删除Status ListTraverse(SqList L,void visit()); //遍历Status ListUnion(SqList &La,SqList &Lb); //合并Status MergeList_Sq(SqList La, SqList Lb, SqList &Lc); //归并void VisitSqList(SqList L); //访问//==================// The end of List.h//==================1.3.2.参考源程序(XX_EX_p)/*==============================================数据结构练习 1 顺序表的实现==============================================班级:学号:姓名:日期:完成内容:*///== 1. 头文件说明#include "stdafx.h"#include<malloc.h>#include<conio.h>#include<string.h>#include<stdlib.h>#include "List.h"//== 2. 函数实现Status InitList(SqList *L) { //初始化L->elem=(ElemType *) malloc (LIST_INIT_SIZE * sizeof (ElemType) );if(!L->elem) return(OVERFLOW);L->length=0;L->listsize=LIST_INIT_SIZE;return OK;}//InitListStatus DestroyList(SqList &L) { //销毁printf("这是一个尚未编好的函数:DestroyList(SqList &L)\n");return OK;}//DestroyListStatus ListInput(SqList *L) {int i=0;char ss[256];ElemType ee=0;printf("请输入1...%d 个元素(输入'#'表示结束):\n",L->listsize);for (i=0;(i<L->listsize)&&(ee!=-1);i++) {printf("elem[%d]=",i);scanf("%s",ss) ;if (*ss=='#') break;ee=atoi(ss);L->elem[i]=ee;}L->length=i;printf("====输入顺序表结束! ====\n");return OK;}//ListInputStatus ClearList(SqList &L){ //置为空表//==本函数有待完成//==提示:将L.length置为0;printf("这是一个有待完成的函数:ClearList(SqList &L)\n");return OK;}//ClearListStatus ListEmpty(SqList L){ //判是否为空表?//==本函数有待完成//==提示:直接判断(L.length==0)?;printf("这是一个有待完成的函数:ListEmpty(SqList L)\n");return OK;}//ListEmptyint ListLength(SqList L){ //求长度//==本函数有待完成//==提示:直接返回(L.length);printf("这是一个有待完成的函数:ListLength(SqList L)\n");return OK;}//ListLengthStatus GetElem(SqList L,int i,ElemType &e){ //取元素//==本函数有待完成//==提示:正常情况下取e=L.elem[i-1];printf("这是一个有待完成的函数:GetElem(SqList L,int i,ElemType &e)\n");return OK;}//GetElemStatus LocateElem(SqList L,ElemType e,Status compare()){ //定位//==本函数有待完成printf("这是一个尚未编好的函数:LocateElem(SqList L,ElemType e,Status compare())\n");return OK;}//LocateElemStatus PriorElem(SqList L,ElemType cur_e,ElemType &pre_e){ //求前驱//==本函数有待完成printf("这是一个尚未编好的函数:PriorElem(SqList L,ElemType cur_e,ElemType &pre_e)\n");return OK;}//PriorElemStatus NextElem(SqList L,ElemType cur_e,ElemType &next_e){ //求后继//==本函数有待完成printf("这是一个尚未编好的函数:NextElem(SqList L,ElemType cur_e,ElemType &next_e)\n");return OK;}//NextElemStatus ListInsert(SqList &L,int i,ElemType e){ //插入//==本函数有待完成printf("这是一个有待完成的函数:ListInsert(SqList &L,int i,ElemType e)\n"); //==定义变量//==异常处理//…… //其他异常处理//==准备//==后移//==插入元素//==调整长度//==结束return OK;}//ListInsertStatus ListDelete(SqList &L,int i,ElemType &e){ //删除//==本函数有待完成printf("这是一个有待完成的函数:ListDelete(SqList &L,int i,ElemType &e)\n"); //==定义变量//==异常处理//…… //其他异常处理//==准备//==取出元素//==前移//==调整长度//==结束return OK;}//ListDeleteStatus ListTraverse(SqList L,void visit(SqList L)){ //遍历visit(L);return OK;}//ListTraverseStatus ListUnion(SqList &La,SqList &Lb) { //合并//==本函数有待完成printf("这是一个尚未编好的函数:ListUnion(SqList &La,SqList &Lb)\n");return OK;}//ListUnionStatus MergeList_Sq(SqList La, SqList Lb, SqList &Lc){ //归并//==本函数有待完成printf("这是一个尚未编好的函数:MergeList_Sq(SqList La, SqList Lb, SqList &Lc)\n");return OK;}//MergeList_Sqvoid visit(SqList L) { //访问int i;for (i=0;i<L.length;i++)printf("elem[%d]=%d \t",i,L.elem[i]);printf("\nL.length=%d \t L.listsize=%d\n",L.length,L.listsize);}//visit//== 3. 定义全局变量SqList L1,L2,L3;//== 4. 定义调试程序void PrintPrompt(void) {printf("\n=====数据结构练习 1 顺序表的实现======\n");printf("1.ListInput(L1)\t\t 2.ListInput(L2)\n");printf("3.ListTraverse(L1)\t 4.ListTraverse(L2)\n");printf("5.ListInsert(L1)\t 6.ListDelete(L1)\n");printf("7.MergeList(L1,L2,L3)\t 8.ListEmpty(L1)\n");printf("9.GetElem(L1)\t\t 0.Exit\n");printf("Please select==>(0-9):");}int main(int argc, char* argv[]){char cc=' ';int i;char ss[256];ElemType e;InitList(&L1);InitList(&L2);PrintPrompt();while (cc!='0') {switch (cc=_getch()) {case '1':printf("\n==== 输入顺序表L1 ====\n");ListInput(&L1);break;case '2':printf("\n==== 输入顺序表L2 ====\n");ListInput(&L2);break;case '3':printf("\n==== 遍历顺序表L1 ====\n");ListTraverse(L1,visit);break;case '4':printf("\n==== 遍历顺序表L2 ====\n");ListTraverse(L2,visit);break;case '5':printf("\n==== 顺序表L1插入元素====\n");printf("请输入插入位置i==>");scanf("%d",&i);printf("请输入插入元素e==>");scanf("%s",&ss);e=atoi(ss);if (ListInsert(L1,i,e)!=OK)printf("输入参数有错!\n");elseprintf("插入操作正常结束!\n");break;case '6':printf("\n==== 顺序表L1删除元素====\n");printf("请输入删除位置i==>");scanf("%d",&i);if (ListDelete(L1,i,e)!=OK)printf("输入参数有错!\n");else {printf("删除操作正常结束!\n");printf("删除的元素e=%d\n",e);}break;case '7':printf("\n==== MergeList ====\n");MergeList_Sq(L1,L2,L3);ListTraverse(L3,visit);break;case '8':printf("\n==== ListEmpty(L1) ====\n");if (ListEmpty(L1))printf("\n L1 is Empty! \n");elseprintf("\n L1 is not Empty! \n");break;case '9':printf("\n==== 顺序表L1取出元素) ====\n");printf("请输入插入位置i==>");scanf("%d",&i);if (GetElem(L1,i,e)!=OK)printf("取出元素有错!\n");else {printf("取出操作正常结束!\n");printf("取出的元素e=%d\n",e);}break;case '0':printf("\n Bye-bye!\n");break;default :if ( (cc<'0') || (cc>'9') ) PrintPrompt();}}return 0;}//==================// The end of EX_01//==================实验2.单链表的实现2.1.目的1、理解链表的基本操作2、了解链表的建立和输出3、掌握链表的插入、删除、合并和归并等实现方法2.2.内容和要求2.2.1.基本要求1、完成下列操作的实现(可选做2个),并上机调试通过Status InsFirst(LinkList &L,ElemType e); //头插入结点e到链表L Status DelFirst(LinkList &L,ElemType &e); //从单链表L删除头结点Status ListInsert(LinkList &L,int i,ElemType e); //插入Status ListDelete(LinkList &L,int i,ElemType &e); //删除2、文件路径和文件名文件路径:E:\DATA_ST\XX_EX_02文件名: XX_EX_02.CPP其中:XX为各人学号的最后2位。