数据结构实验指导书(2016.03.11)

合集下载

数据结构实验-实验指导书

数据结构实验-实验指导书

实验一线性表操作一、实验目的1熟悉并掌握线性表的逻辑结构、物理结构。

2熟悉并掌握顺序表的存储结构、基本操作和具体的函数定义。

3熟悉VC++程序的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用。

4熟悉VC++操作环境的使用以及多文件的输入、编辑、调试和运行的全过程。

二、实验要求1实验之前认真准备,编写好源程序。

2实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。

3不断积累程序的调试方法。

三、实验内容基本题:1对元素类型为整型的顺序存储的线性表进行插入、删除和查找操作。

加强、提高题:2、编写一个求解Josephus问题的函数。

用整数序列1, 2, 3, ……, n表示顺序围坐在圆桌周围的人。

然后使用n = 9, s = 1, m = 5,以及n = 9, s = 1, m = 0,或者n = 9, s = 1, m = 10作为输入数据,检查你的程序的正确性和健壮性。

最后分析所完成算法的时间复杂度。

定义JosephusCircle类,其中含完成初始化、报数出圈成员函数、输出显示等方法。

(可以选做其中之一)加强题:(1)采用数组作为求解过程中使用的数据结构。

提高题:(2)采用循环链表作为求解过程中使用的数据结构。

运行时允许指定任意n、s、m数值,直至输入n = 0退出程序。

实验二栈、队列、递归应用一、实验目的1熟悉栈、队列这种特殊线性结构的特性2熟练掌握栈、队列在顺序存储结构和链表存储结构下的基本操作。

二、实验要求1实验之前认真准备,编写好源程序。

2实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。

3不断积累程序的调试方法。

三、实验内容基本题(必做):1分别就栈的顺序存储结构和链式存储结构实现栈的各种基本操作。

2、假设以带头结点的循环链表表示队列,并且只设一个指针指向对尾结点,不设头指针,试设计相应的置队空、入队和出队的程序。

加强题:3设线性表A中有n个字符,试设计程序判断字符串是否中心对称,例如xyzyx和xyzzyx都是中心对称的字符串。

数据结构实验指导书

数据结构实验指导书

数据结构实验指导书一、实验目的数据结构是计算机科学中的重要基础课程,通过实验,旨在帮助学生更好地理解和掌握数据结构的基本概念、原理和算法,提高学生的编程能力和问题解决能力。

具体而言,实验的目的包括: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、图的存储结构实现邻接矩阵和邻接表两种图的存储结构。

数据结构实验指导书

数据结构实验指导书

数据结构实验指导书实验1:顺序表基本操作一、实验目的1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。

2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。

3.掌握对多函数程序的输入、编辑、调试和运行过程。

二、实验要求1.预习C语言中结构体的定义与基本操作方法。

2.对顺序表的每个基本操作用单独的函数实现。

3.编写完整程序完成下面的实验内容并上机运行。

4.整理并上交实验报告。

三、实验内容:1.编写程序实现顺序表的下列基本操作:(1)初始化顺序表La。

(2)将La置为空表。

(3)销毁La。

(4)在La中插入一个新的元素。

(5)删除La中的某一元素。

(6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。

(7)打印输出La中的元素值。

2.编写程序完成下面的操作:(1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。

(2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。

(3)假设两个顺序线性表La和Lb分别表示两个集合A和B,利用union_Sq操作实现A=A∪B。

四、思考与提高假设两个顺序线性表La和Lb分别表示两个集合A和B,如何实现A=A ∩B ?一、实验目的1.学会定义单链表的结点类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。

2.掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。

二、实验要求1.预习C语言中结构体的定义与基本操作方法。

2.对单链表的每个基本操作用单独的函数实现。

3.编写完整程序完成下面的实验内容并上机运行。

4.整理并上交实验报告。

三、实验内容1.编写程序完成单链表的下列基本操作:(1)初始化单链表La。

(2)在La中插入一个新结点。

(3)删除La中的某一个结点。

(4)在La中查找某结点并返回其位置。

《数据结构》实验指导书

《数据结构》实验指导书

数据结构实验课程大纲本大纲是针对计算机科学与技术专业本科对数据结构的基本要求而编写的。

一、目的与任务数据结构是一门实践性很强的课程,每个学生必须完成一定数量的上机作业。

通过上机作业,要求在数据结构的逻辑特性和存贮表示、基本数据结构的选择和应用、算法设计及其实现等方面加深对课程基本内容的理解。

同时,在程序设计方法、程序设计风格及上机操作等基本技能和科学作风方面受到比较系统的、严格的训练。

提高分析问题和用计算机解决实际问题的能力。

为后续课程的学习以及为应用软件特别是非数值软件的开发打下良好的理论基础和实践基础。

二、课程内容1.顺序表的表示和运算(0-2学时)2.链表的表示和运算(2学时)3.栈的应用(2-3学时)4.队列的应用(2-3学时)5.二叉树的基本操作和应用(2-6学时)6.图及其应用(2-6学时)7.排序(4-6学时)8.查找(2-4学时)三、基本要求1.逐步理解和掌握程序设计和上机操作的基本方法和技能。

2.理解并实现各种基本数据结构的存贮表示、运算方法及其典型应用;学会根据实际问题的要求设计算法的数据结构,并具有一定的比较和选用数据结构及算法的能力。

3.理解并实现常用的查找和排序的基本方法。

四、学时分配五、实验内容注:带*的内容以及练习与思考题,可根据实际学时、专业方向特点等具体要求,做相应调整或从略。

实验一、顺序表实验目的:熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作。

实验要求:了解并熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作的实现和应用。

实验内容:编写程序实现下列的要求:(1) 设数据元素为整数,实现这样的线性表的顺序存储表示。

(2) 键盘输入10个数据元素,利用顺序表的基本操作,建立该表。

(3) 利用顺序表的基本操作,找出表中的最大的和最小的数据元素(用于比较的数据元素为整数)。

(4) * 若数据元素为学生成绩(含姓名、成绩等字段),重新编程,实现上面的要求。

要求尽可能少地修改前面的程序来得到新程序。

数据结构实验指导书

数据结构实验指导书

数据结构实验指导书适用所有开设数据结构实验的专业雷文赵攀编写概述一、课程目的《数据结构》是一门实践性很强的软件基础课程,为了学好这门课,每个学生必须完成一定数量的上机作业。

通过本课程的上机作业,要求在数据结构的选择和应用、算法的设计及实现等方面加深对课程基础内容的理解,同时,实验题中的问题比平时的练习题要复杂,也更接近实际,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

本课程实验的目的是旨在使学生进一步巩固课堂上所学的理论知识;深化理解和灵活掌握教学内容;培养学生算法设计的能力和解决实际问题的程序设计的能力。

二、实验名称与学时分配三、实验要求⒈问题分析充分地分析和理解问题本身,弄清要求做什么,包括功能要求、性能要求、设计要求和约束以及基本数据特性,数据间的联系等。

⒉数据结构设计针对要求解决的问题,考虑各种可能的数据结构,并且力求从中出最佳方案(必须连同算法一起考虑),确定主要的数据结构及全程变量。

对引入的每种数据结构和全程变量要详细说明其功能、初值和操作特点。

⒊算法设计算法设计分概要设计和详细设计,概要设计着重解决程序的模块设计问题,这包括考虑如何把被开发的问题程序自顶向下分解成若干顺序模块,并决定模块的接口,即模块间的相互关系以及模块之间的信息交换问题.详细设计则要决定每个模块内部的具体算法,包括输入、处理和输出,采用类C语言描述。

⒋测试用例设计准备典型测试数据和测试方案,测试数据要有代表性、敏感性,测试方案包括模块测试和模块集成测试。

⒌上机调试对程序进行编译,纠正程序中可能出现的语法错误,测试前,先运行一遍程序看看究竟将会发生什么,如果错误较多,则根据事先设计的测试方案并结合现场情况进行错误跟踪,包括打印执行路径或输出中间变量值等手段。

三、实验考核每次实验结束后,均应上交实验报告。

数据结构课程实验成绩单独考核,占1个学分。

实验报告应包括如下内容:1、问题描述:简述题目要解决的问题是什么。

数据结构实验指导书(本科正式)

数据结构实验指导书(本科正式)

《数据结构》实验指导书实验一线性表【实验目的】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、本次实验的结论与体会。

数据结构实验指导书

数据结构实验指导书

数据结构实验指导书目录实验规则 (2)实验环境 (2)实验报告要求 (3)实验一单链表(一) (4)实验二单链表(二) (5)实验三栈 (6)实验四二叉树 (7)实验五最短路径 (8)实验六内部排序 (9)实验规则为了顺利完成实验教学任务,确保人身、设备的安全,培养严谨、踏实、实事求是的科学作风和爱护国家财产的优良品质,特制定以下实验规则:1、实验前必须充分预习,完成指定的预习任务。

预习要求如下:(1)认真阅读指导书,进行必要的设计与计算。

(2)熟悉实验内容。

(3)预先复习,并按要求编写程序。

(4)未完成预习任务者不得进入实验室。

2、遵守以下纪律:(1)在实验室不得做和实验无关的事情。

(2)进行任课老师指定内容以外的实验,必须经指导教师同意。

(3)遵守纪律,不迟到。

(4)保持实验室内安静、整洁,爱护公物,不许乱写乱画。

实验环境本实验在386以上的微机上进行,运行环境为VC6.0。

实验报告要求1、实验题目2.实验目的3.实验环境4.实验内容与完成情况(可以附上自主设计的源程序)5.出现的问题及对问题的解决方案6.实验思考:(学生对本次实验的收获的总结)一、实验目的掌握线性表的链式存储结构及其基本操作。

二、预习要求1、看懂书上的算法,深入理解链表的物理存储模式和逻辑模式。

2、根据要求,编写程序准备上机调试。

三、实验内容实现一个简单的学生信息管理系统,该系统的功能有:1、利用单链表建立学生基本信息表2、浏览每个学生的信息3、根据学号查询某个学生的基本信息4、添加学生信息到单链表中5、删除一个学生的信息四、实现提示设计结点的结构体类型,包括学生的学号、姓名、年龄、性别;要求设计一个简单的菜单界面,根据需要选择所要进行的操作;构造函数,每一个函数实现上述的一个功能。

一、实验目的掌握线性表的链式存储结构及其基本操作。

二、预习要求1、看懂书上的算法,深入理解链表的物理存储模式和逻辑模式。

2、根据要求,编写程序准备上机调试。

数据结构实验指导书

数据结构实验指导书

数据结构实验指导书院别专业班级姓名计算机学院编实验一线性表的顺序存储实验一、实验目的及要求1、掌握在TC环境下调试顺序表的基本方法2、掌握顺序表的基本操作,插入、删除、查找、以及有序顺序表的合并等算法的实现。

二、实验学时2学时三、实验任务1、生成一个顺序表并动态地删除任意元素和在任意位置插入元素。

2、将两个有序表合并成一个有序表。

四、实验重点、难点1、在顺序表中移动元素。

2、在顺序表中找到正确的插入位置。

五、操作要点(一)顺序表基本操作的实现[问题描述] 当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。

若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。

[基本要求] 要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。

[实现提示] 要实现基本操作,可用实现的基本操作,也可设计简单的算法实现。

[程序实现]#include <stdio.h>#include <conio.h>typedef int DataType ;# define maxnum 20typedef struct{int data[maxnum];int length;}SeqList;/*插入函数*/int insert(SeqList *L , int i , DataType x)/* 将新结点x插入到顺序表L第i个位置 */{ int j ;if( i<0 || i>(*L).length +1){ printf(" \n i 值不合法 ! ");return 0;}if((* L).length >=maxnum-1){ printf(" \n 表满不能插入!");return 0;}for(j=(*L).length;j>=i;j--) (*L).data[j+1]=(*L).data[j];(*L).data[i] = x;(*L).length++;return 1;}/*删除函数*/int delete( SeqList *L ,int i)/*从顺序L中删除第i个结点*/{ int j ;if( i<0|| i>(*L).length ){ printf(" \n 删除位置错误 ! ") ;return 0;}for(j=i+1;j<=(*L).length;j++)(*L).data[j-1] =(*L).data[j];(*L).length--;return 1;}/*生成顺序表*/void creatlist(SeqList * L){ int n , i , j ;printf("请输入顺序表 L 的数据个数:\n") ;scanf("%d" , &n) ;for(i=0 ; i<n ; i++){ printf("data[%d] =" , i) ;scanf("%d",&((*L).data[i]));}(*L).length=n-1;printf("\n") ;}/*creatlist *//*输出顺序表 L*/printout(SeqList * L){ int i ;for (i=0 ; i<=(* L).length ; i++){ printf(" data[%d]=", i) ;printf("%d", (*L).data[i]);}/*printout */printf("\n");}main(){ SeqList *L ;char cmd ;int i , t , x;clrscr() ;creatlist(L);do{printf("\ni , I ----- 插入\n") ;printf("d , D ----- 删除\n") ;printf("q , Q ----- 退出\n") ;do{cmd=getchar() ;}while((cmd!='i')&&(cmd!='I')&&(cmd!='d')&&(cmd!='D')&&(cmd!='q')&&(cmd!='Q')); switch(cmd){ case 'i':case 'I':printf("\nPlease input the DATA: ");scanf("%d",&x) ;printf("\nWhere? ");scanf("%d",&i) ;insert(L,i,x) ;printout(L);break ;case 'd':case 'D' :printf("\nWhere to Delete? ");scanf("%d",&i);delete(L,i);printout(L);break ;}}while((cmd!='q')&&(cmd!='Q'));}(二)有序顺序表的合并[问题描述] 已知顺序表la和lb中的数据元素按非递减有序排列,将la和lb表中的数据元素,合并成为一个新的顺序表lc[基本要求] lc中的数据元素仍按非递减有序排列,并且不破坏la和lb表[程序实现]# include <stdio.h># define maxnum 20typedef int DataType ;typedef struct{ DataType data[maxnum] ;int length ;}SeqList ;int MergeQL(SeqList la , SeqList lb , SeqList *lc){ int i , j , k ;if (la.length+1 + lb.length+1>maxnum){ printf("\narray overflow!") ;return 0;}i=j=k=0;while(i<=la.length && j<=lb.length){ if (la.data[i]<=lb.data[j])lc->data[k++]=la.data[i++] ;elselc->data[k++]=lb.data[j++];}/* 处理剩余部分 */while (i<=la.length) lc->data[k++]=la.data[i++];while (j<=lb.length) lc->data[k++]=lb.data[j++];lc->length=k-1;return 1;}main(){ SeqList la={{3,4,7,12,15},4} ;SeqList lb={{2,5,7,15,18,19},5} ;SeqList lc ;int i ;if (MergeQL(la,lb,&lc)){ printf("\n") ;for(i=0;i<=lc.length ; i++)printf("%4d",lc.data[i]);}}六、注意事项1、删除元素或插入元素表的长度要变化。

《数据结构》实训指导书

《数据结构》实训指导书

《数据结构》实训指导书实训一线性表基本操作算法设计一、实训目的与要求1、掌握线性表的顺序存储结构的实现及其基本操作的算法设计;2、掌握线性表的链式存储结构的实现及其基本操作的算法设计;3、掌握算法转化为C程序的方法。

二、实训内容1、根据线性表L=(a,b,c,d,e,f),编写程序建立其顺序存储结构并完成插入或删除操作。

2、根据线性表L=(a,b,c,d,e,f),编写程序建立其链式存储结构并完成插入或删除操作。

三、实训步骤1、根据算法设计编写源程序;2、输入并编辑源程序;3、运行并分析程序;四、实训总结与体会[根据本次实训过程,总结你对线性表基本操作算法设计的基本体会]实训二栈和队列基本操作的算法设计一、实训目的与要求1、掌握栈的基本操作算法设计的实现;2、掌握队列的基本操作算法设计的实现。

二、实训内容1、根据栈S=(a,b,c,d,e),建立其顺序存储结构或链式存储结构,并完成对该栈的进栈或出栈操作;2、根据队列Q=(a,b,c,d,e),建立其顺序存储结构或链式存储结构,并完成对该队列的进队或出队操作;三、实训步骤1、根据算法编写源程序;2、输入并编辑源程序;3、调试、分析程序。

四、实训总结[根据本次实训内容和过程,总结你对栈、队列的基本操作算法设计的体会]实训三二叉树的遍历算法设计一、实训目的与要求1、掌握二叉树的链式存储结构的算法实现;2、掌握遍历二叉树的算法实现。

二、实训内容1、根据算法编写程序建立下图所示二叉树的链式存储结构(建立二叉链表);2、根据算法编写程序完成对该二叉树的中序遍历(或先序遍历、后序遍历)。

三、实训步骤1、根据算法编写程序;2、输入并编辑程序;3、运行并分析程序。

四、实训总结与体会【根据本次实训内容及过程,简述对二叉树存储结构的实现及遍历二叉树算法设计的体会】实训四图的存储及遍历算法设计一、实训目的与要求1、掌握图的邻接矩阵、邻接表存储结构的算法实现;2、掌握图的遍历算法设计。

《数据结构》实验指导书(修订版)

《数据结构》实验指导书(修订版)

《数据结构》实验指导书;郑州轻工业学院目录&前言 (3)实验01 顺序表的基本操作 (7)实验02 单链表的基本操作 (19)实验03 栈的基本操作 (32)实验04 队列的基本操作 (35)实验05 二叉树的基本操作 (38)实验06 哈夫曼编码 (40)实验07 图的两种存储和遍历 (42)实验08 最小生成树、拓扑排序和最短路径 (46)实验09 二叉排序树的基本操作 (48)实验10 哈希表的生成 (50)>实验11 常用的内部排序算法 (52)附:实验报告模板 (54)前言《数据结构》是计算机相关专业的一门核心基础课程,是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础,也是很多高校考研专业课之一。

它主要介绍线性结构、树型结构、图状结构三种逻辑结构的特点和在计算机内的存储方法,并在此基础上介绍一些典型算法及其时、空效率分析。

这门课程的主要任务是研究数据的逻辑关系以及这种逻辑关系在计算机中的表示、存储和运算,培养学生能够设计有效表达和简化算法的数据结构,从而提高其程序设计能力。

通过学习,要求学生能够掌握各种数据结构的特点、存储表示和典型算法的设计思想及程序实现,能够根据实际问题选取合适的数据表达和存储方案,设计出简洁、高效、实用的算法,为后续课程的学习及软件开发打下良好的基础。

另外本课程的学习过程也是进行复杂程序设计的训练过程,通过算法设计和上机实践的训练,能够培养学生的数据抽象能力和程序设计能力。

学习这门课程,习题和实验是两个关键环节。

学生理解算法,上机实验是最佳的途径之一。

因此,实验环节的好坏是学生能否学好《数据结构》的关键。

为了更好地配合学生实验,特编写实验指导书。

一、实验目的本课程实验主要是为了原理和应用的结合,通过实验一方面使学生更好的理解数据结构的概念和常用的几种数据结构在计算机中的存储和实现的方法,加强学生动手能力;另一方面培养学生从实际问题中抽象出对应的抽象数据类型,进而找到合适的计算机存储方法和算法,为以后课程的学习、大型软件的开发、实际工程问题打下良好的软件开发基础。

《数据结构》实验指导书(新教学计划)

《数据结构》实验指导书(新教学计划)

数据结构实验指导书数据结构实验指导书目录数据结构实验指导书 (1)目录 (1)实验指导书概述 (2)实验题目 (3)实验一单链表的插入、删除 (3)[实验目的] (3)[实验内容] (3)[测试数据] (3)[实现提示] (3)实验二栈及其应用 (5)[实验目的] (5)[实验内容] (5)[测试数据] (5)实验三二叉树的递归算法 (5)[实验目的] (5)[实验内容] (6)[测试数据] (6)实验四查找及排序算法的应用 (7)[实验目的] (7)[实验内容] (7)[测试数据] (7)实验指导书概述“数据结构”是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。

本课程系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了多种常用的查找和排序技术,并对其进行了性能分析和比较,内容非常丰富。

本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。

由于以下原因,使得掌握这门课程具有较大难度:∙内容多,时间短,给学习带来困难;∙贯穿全书的动态链表存储结构和递归技术是学习中的重点和难点;∙隐含在各部分的技术和方法丰富,也是学习的重点和难点;∙先修课程中所介绍的专业性知识不多,加大了学习难度。

由于数据结构课程的技术性与实践性,《数据结构课程实验》的设置十分必要。

为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。

数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。

在掌握基本算法的基础上,掌握分析、解决实际问题的能力。

通过实验实践内容的训练,突出构造性思维训练的特征, 提高学生组织数据及编写大型程序的能力。

数据结构实验指导书

数据结构实验指导书

2016年3月前言数据结构是计算机专业的必修、主干课程之一,它旨在使学生学会分析、研究计算机加工的数据对象的特性,学会把数据的组织方法,以便选择合适的数据逻辑结构和存储结构,以及相应的运算(操作),把现实世界中的问题转化为计算机内部的表示和处理,这是一个良好的环节。

为了指导和帮助学生更好地学习、实践数据结构这门课程,我编写了这本实验指导书。

《数据结构实验指导书》列举了数据结构课程设计实例,通过综合训练,能够培养学生实际分析问题、解决问题、编程和动手操作等多方面的能力,最终目的是帮助学生系统地掌握该门课程的基本内容,并运用所学的数据结构知识去解决实际问题。

指导书中共有十个实验,内容包括数据结构课程设计概述、线性表、栈、队列、树状结构、图状结构、查找和排序等问题的应用。

《数据结构实验指导书》是一本独立于具体的数据结构教材的辅导书,通过针对每种数据结构的具体实例,循序渐进地启发学生完成设计。

书中给出的实例都是完整可运行的,同时给出了测试样例、总结与思考等,辅助学生学习的教学辅导参考书。

目录实验一:一元二次方程的求解 (1)实验二:线性表—顺序表 (2)实验三:线性表—单链表 (3)实验四:栈和队列—数制转换 (5)实验五:栈和队列—模拟病人到医院排队看病 (6)实验六:树—二叉树的建立与遍历 (7)实验七:树—二叉树遍历的应用 (8)实验八:图—图的建立与遍历 (9)实验九:查找算法设计与实现 (11)实验十:排序算法设计与实现 (12)实验一:一元二次方程的求解一、实验目的:1、熟悉C语言的上机环境,掌握C语言的基本语法和结构2、熟悉定义函数和函数声明的方法3、熟悉函数实参和形参的对应关系4、学习对文件程序的编译和运行二、实验内容与步骤:1、求方程ax2+bx+c=0的解,用3个调用函数实现b2-4ac=0,>0,<0的情况2、定义三个函数用作主函数的调用3、编写主函数三、实验平台与课时安排:Visual C++ 6.0集成环境;2课时四、实验设计方案:1、a=0 不是二次方程2、b2-4ac>0,有两个不等实根3、b2-4ac<0,有两个共轭复根【运行结果】程序运行结果如图1所示。

《数据结构》实验指导书

《数据结构》实验指导书
ElemType e;//非零元素的值
} Triple;
typedef struct
{Triple data[MAXSIZE+1];
//非零元素的三元组表,data[0]未用
int mu,nu,tu;//矩阵的行数、列数和非零元素个数
typedef struct list
{ElemType elem[MAXSIZE];//静态线性表
int length; //顺序表的实际长度
} SqList;//顺序表的类型名
五、注意问题
1.插入、删除时元素的移动原因、方向及先后顺序。
4.编写函数,借助队列实现二叉树的层次遍历算法。
5.编写函数,求二叉树的高度。
6.编写函数,求二叉树的结点个数。
7.编写函数,求二叉树的叶子个数。
8.编写函数,交换二叉树每个结点的左子树和右子树。
9.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。
六、实验报告
根据实验情况和结果撰写并递交实验报告。
实验三 栈和队列
一、预备知识
1.栈的顺序存储和链式存储结构的类型定义方法及其基本操作算法
2.队列的顺序存储和链式存储结构的类型定义方法及其基本操作算法
二、实验目的
1.掌握栈、队列的思想及其存储实现
2.掌握栈、队列的常见算法的程序实现
8.编写函数,实现输入一个元素x,把它插入到有序表中,使顺序表依然有序。
9.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。
四、实验说明
1.顺序表的存储定义
#define MAXSIZE 100 //顺序表的最大元素个数

数据结构实验指导书

数据结构实验指导书

数据结构实验指导书一、实验目的本实验旨在通过实践操作,加深对数据结构的理解,掌握数据结构的基本操作和算法设计。

二、实验内容1. 实验环境搭建:a. 安装编程环境,如C++编译器或Java开发环境。

b. 配置相关的开发工具和库文件。

2. 实验一:线性表的实现与应用a. 实现线性表的基本操作,包括初始化、插入、删除、查找等。

b. 实现线性表的应用,如实现一个简单的通讯录管理系统。

3. 实验二:栈和队列的实现与应用a. 实现栈的基本操作,包括入栈、出栈、判空等。

b. 实现队列的基本操作,包括入队、出队、判空等。

c. 实现栈和队列的应用,如实现一个简单的表达式计算器。

4. 实验三:二叉树的实现与应用a. 实现二叉树的基本操作,包括创建、插入、删除、遍历等。

b. 实现二叉树的应用,如实现一个简单的文件系统。

5. 实验四:图的实现与应用a. 实现图的基本操作,包括创建、插入节点、插入边、遍历等。

b. 实现图的应用,如实现一个简单的社交网络系统。

三、实验步骤1. 实验环境搭建:a. 下载并安装编程环境,如Dev-C++或Eclipse。

b. 配置相关的开发工具和库文件,确保能够正常编译和运行程序。

2. 实验一:线性表的实现与应用a. 设计线性表的数据结构,包括元素类型和相关操作。

b. 实现线性表的初始化、插入、删除和查找等基本操作。

c. 设计并实现一个简单的通讯录管理系统,包括添加联系人、删除联系人和查找联系人等功能。

3. 实验二:栈和队列的实现与应用a. 设计栈和队列的数据结构,包括元素类型和相关操作。

b. 实现栈的入栈、出栈和判空等基本操作。

c. 实现队列的入队、出队和判空等基本操作。

d. 设计并实现一个简单的表达式计算器,支持基本的四则运算。

4. 实验三:二叉树的实现与应用a. 设计二叉树的数据结构,包括节点类型和相关操作。

b. 实现二叉树的创建、插入、删除和遍历等基本操作。

c. 设计并实现一个简单的文件系统,支持文件和文件夹的创建、删除和查找等功能。

《数据结构》实验指导书

《数据结构》实验指导书

《数据结构》实验指导书实验指导书课程名称:数据结构计算机科学与工程系《数据结构》课程组目录前言 .................................... 1 一、实验的作用和目的 ..................... 2 二、实验方式与考核方式................... 2 三、实验要求 ............................. 3 四、实验报告要求......................... 4 五、实验内容 .. (5)实验一线性表应用 (5)实验二栈与队列应用 (10)实验三二叉树的操作 (14)实验四图的遍历 ................................................18 实验五查找算法应用 (21)六、选做实验内容 (24)实验六排序 ................................................ ....24 实验七数组和广义表 (26)实验八串 ................................................ . (27)前言《数据结构》数据结构是计算机科学与技术及相关专业的一门重要专业基础课,它主要介绍线性结构、树型结构、图状结构三种逻辑结构元素的存储实现,在此基础上介绍一些典型算法,以及算法的时间、空间效率分析。

这门课程的主要任务是培养学生的算法设计能力及良好的程序设计习惯。

通过本课程的学习,使学生熟练地掌握数据结构的内在逻辑关系及其在计算机中的表示方法,以及相关基本操作的算法实现;掌握典型算法的设计思想及程序实现;熟悉各种数据结构在计算机科学中的基本应用;培养和训练学生结合实际应用,根据实际问题选取合适的数据结构、存储方案设计出简洁、高效、实用的算法;并为学习《操作系统》、《编译原理》、《数据库原理》等后续课程和研制开发各种系统和应用软件打下扎实的理论与实践基础。

《数据结构》实验指导书

《数据结构》实验指导书

实验一线性表的操作一、实验目的1.掌握在VC++6.0的集成环境中调试程序的基本方法。

2.掌握线性表的插入和删除操作在顺序存储结构和链式存储结构上的实现。

二、实验内容(三选一)(一)线性表的插入和删除操作在顺序存储结构和链式存储结构上的实现。

(1)线性表的插入和删除操作在顺序存储结构上的实现。

其中函数ListInsert_Sq的功能是在顺序线性表中第i个元素之前插入一个元素,函数ListDelete_Sq的功能是删除顺序线性表中第i个元素。

#define LIST_INIT_SIZE 1000#define LISTINCREMENT 10#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define OK 1#define ERROR 0#define OVERFLOW -2//顺序表的存储结构定义typedef int Status;typedef int ElemType;typedef struct{ElemType *elem; //首地址int length; //顺序表的长度int listsize; //顺序表的存储容量} SqList;Status InitList_Sq(SqList &L) // 顺序表的初始化{}// InitList_Sq(Status ListInsert_Sq (SqList &L, int i, ElemType e) //插入{ //在顺序表的第i个位置插入值e为的元素}// ListInsert_SqStatus ListDelete_Sq(SqList &L, int i, ElemType &e) //删除{ //在顺序表的第i个位置删除一个元素,值在存进e中}// ListDelete_Sqint main( ){ElemType y;SqList L;int i,n;InitList_Sq(L); /* 初始化线性表*/printf("输入顺序表需存进的元素数量!\n");scanf("%d",&n);while(n<1 || n>10){printf("请输入1--10之间的整数!\n");scanf("%d",&n);}/* 以上循环语句的功能是控制输入数据个数的合法性,可以修改*/printf("依次输入存进顺序表中的数据元素:\n");for(i=1;i<=n;i++){scanf(“%d”,&y);ListInsert_Sq(L,i,y) ;}/* 以上循环语句的功能是依次输入要存进顺序表中的元素,并存进顺序表*/printf("顺序表中的元素为:");for(i=0; i<L.length; i++) printf("%d\t",L.elem[i]);/* 以上循环语句的功能是依次输出顺序表中的元素*/printf("\n");printf(“输入要删除元素的位置!\n”);scanf(“%d”,&n);if(ListDelete_Sq(L,n,y)==OK) { printf(“删除成功!”); printf("被删除的元素是:%d\n",y); }printf("顺序表中的元素为:");for(i=0; i<L.length; i++) printf("%d\t",L.elem[i]);/* 以上循环语句的功能是依次输出顺序表中的元素*/printf("\n");system("pause");return 0;}实验程序运行示例:(2)线性表的建立、插入、删除、打印和查找操作在链式存储结构上的实现。

《数据结构》实 验 指 导 书.doc

《数据结构》实 验 指 导 书.doc

《数据结构(C#)》实验指导书软件学院—、上机实验的指导思想和要求1.1 上机实验的目的上机实验的目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编的程序正确与否。

上机实验的目的是:(1)加深对讲授内容的理解,光靠课堂讲授,既枯燥无味又难以记住,但它们是很重要的,通过多次上机,就能自然地、熟练地掌握。

(2)熟悉所用的计算机系统的操作方法,也就是了解和熟悉C#程序开发的环境。

一个程序必须在一定的外部环境下才能运行,所谓“环境”,就是指所用的计算机系统的硬件和软件条件,或者说是工作平台。

使用者应该了解为了运行一个C#程序需要哪些必要的外部条件(例如硬件配置、软件配置),可以利用哪些系统的功能来帮助自己开发程序。

每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一两种计算机系统的使用,再遇到其他系统时便会触类旁通,很快地学会。

(3)学会上机调试程序。

也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。

经验丰富的人,在编译连接过程中出现“出错信息”时,一般能很快地判断出错误所在,并改正之。

而缺乏经验的人即使在明确的“出错提示”下也往往找不出错误而求助于别人。

要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,还要求自己动手实现。

对程序设计来说,则要求会编程序并上机调试通过。

因此调试程序不仅是得到正确程序的一种手段,而且它本身就是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。

调试程序固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积经验,而且有些经验是只能“会意”难以“言传”。

别人的经验不能代替自己的经验。

调试程序的能力是每个程序设计人员应当掌握的一项基本功。

因此,在做实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变某些语句等),再进行编译、连接和运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》实验指导书郑州轻工业学院2016.02.20目录前言 (3)实验01 顺序表的基本操作 (7)实验02 单链表的基本操作 (19)实验03 栈的基本操作 (32)实验04 队列的基本操作 (35)实验05 二叉树的基本操作 (38)实验06 哈夫曼编码 (40)实验07 图的两种存储和遍历 (42)实验08 最小生成树、拓扑排序和最短路径 (46)实验09 二叉排序树的基本操作 (48)实验10 哈希表的生成 (50)实验11 常用的内部排序算法 (52)附:实验报告模板 .......... 错误!未定义书签。

前言《数据结构》是计算机相关专业的一门核心基础课程,是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础,也是很多高校考研专业课之一。

它主要介绍线性结构、树型结构、图状结构三种逻辑结构的特点和在计算机内的存储方法,并在此基础上介绍一些典型算法及其时、空效率分析。

这门课程的主要任务是研究数据的逻辑关系以及这种逻辑关系在计算机中的表示、存储和运算,培养学生能够设计有效表达和简化算法的数据结构,从而提高其程序设计能力。

通过学习,要求学生能够掌握各种数据结构的特点、存储表示和典型算法的设计思想及程序实现,能够根据实际问题选取合适的数据表达和存储方案,设计出简洁、高效、实用的算法,为后续课程的学习及软件开发打下良好的基础。

另外本课程的学习过程也是进行复杂程序设计的训练过程,通过算法设计和上机实践的训练,能够培养学生的数据抽象能力和程序设计能力。

学习这门课程,习题和实验是两个关键环节。

学生理解算法,上机实验是最佳的途径之一。

因此,实验环节的好坏是学生能否学好《数据结构》的关键。

为了更好地配合学生实验,特编写实验指导书。

一、实验目的本课程实验主要是为了原理和应用的结合,通过实验一方面使学生更好的理解数据结构的概念和常用的几种数据结构在计算机中的存储和实现的方法,加强学生动手能力;另一方面培养学生从实际问题中抽象出对应的抽象数据类型,进而找到合适的计算机存储方法和算法,为以后课程的学习、大型软件的开发、实际工程问题打下良好的软件开发基础。

二、实验要求1、每次实验前学生必须根据实验内容认真准备实验程序及调试时所需的输入数据。

2、在指导教师的帮助下能够完成实验内容,得出正确的实验结果。

3、实验结束后总结实验内容、书写实验报告。

4、遵守实验室规章制度、不缺席、按时上、下机。

5、实验学时内必须做数据结构的有关内容,不允许上网聊天或玩游戏,如发现上述现象,取消本次上机资格,平时成绩扣10分。

6、实验报告有一次不合格,扣5分,两次以上不合格者,平时成绩以零分记。

三、实验环境VC++6.0或其他C++相关的编译环境。

四、说明1、本实验的所有算法中元素类型应根据实际需要合理选择。

2、实验题目中带*者为较高要求,学生可自选;其余部分为基本内容,应尽量完成(至少完成70%,否则实验不合格)。

3、数据结构是很多高校的硕士研究生入学考试的专业课之一,希望有志于考研的学生能够在学习过程中注意各种算法的理解,以便为考研做一定的准备。

4、好的算法决定了好的程序,要有效地实现算法,就需要设计能够有效表达和简化算法的数据结构,因此数据结构是有效进行程序设计的基础,是每个程序员的必修课。

五、实验报告的书写要求1、明确实验的目的及要求。

2、记录实验的输入数据和输出结果。

3、说明实验中出现的问题和解决过程。

4、写出实验的体会和实验过程中没能解决的问题。

5、实验程序请构建为多文件程序,每一个算法对应的函数原型声明存放在头文件*.h中,对应的函数实现存放在源文件*.c中;main()函数存放在另一个源文件中,该文件包含头文件*.h即可。

六、成绩考评办法1、期末考试占70分,闭卷。

2、平时考评占30分。

其中实验环节占20分(实验准备、上机、报告、验收等);平时占10分(出勤、作业、测验等)。

七、参考书目1、《数据结构》(C语言版)严蔚敏等清华大学出版社2、《数据结构题集》(C语言版)严蔚敏等清华大学出版社3、《数据结构与算法分析——C语言描述》,Mark Allen Weiss著,机械工业出版社,2012实验01 顺序表的基本操作实验学时:2学时实验类型:上机背景知识:顺序表的插入、删除及应用。

目的要求:1.掌握顺序存储结构的特点。

2.掌握顺序存储结构的常见算法。

实验内容:编写一个完整的程序,实现顺序表的生成、插入、删除、输出等基本运算。

(1)建立一个顺序表,含有n个数据元素。

(2)输出顺序表。

(3)在顺序表中删除值为x的结点或者删除给定位置i的结点。

(4)实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。

(5)输入整型元素序列,利用有序表插入算法建立一个有序表。

(6)*利用算法5建立两个非递减有序表A和B,并把它们合并成一个非递减有序表C。

(7)在主函数中设计一个简单的菜单,分别测试上述算法。

(8)*综合训练:利用顺序表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等)。

实验说明:1.请构建多文件程序,算法1至算法6对应的函数原型声明存放在头文件SqList.h中,对应的函数实现存放在源文件SqList.c中;main()函数存放在另一个源文件中,该文件包含头文件SqList.h即可。

2.类型定义#define MAXSIZE 100 //表中元素的最大个数typedef int ElemType; //元素类型typedef struct{ElemType *elem; //线性表int length; //表的实际长度int listsize; //当前分配的存储容量}SqList; //顺序表的类型名3.建立顺序表时可利用随机函数自动产生数据。

注意问题:1、插入、删除时元素的移动原因、方向及先后顺序。

2、理解函数形参与实参的传递关系。

部分源代码:DS.h#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef int Status;SqList.h#ifndef SQLIST_H_INCLUDED #define SQLIST_H_INCLUDED#include "DS.h"typedef int ElemType;typedef struct{ElemType *elem;int length;int listsize;}SqList;void menu();Status InitList_Sq(SqList &L, int n);/*初始化顺序表*/Status CreateList_Sq(SqList &L);/*建立顺序表*/void PrintList_Sq(SqList L);/*输出顺序表*/Status DeleteList_Sq(SqList &L,int i,ElemType &e);/*删除第i个元素*/Status DeleteListX_Sq(SqList &L,ElemType x);/*删除值为x的元素*/Status AdjustList_Sq(SqList &L);/*奇数排在偶数之前*/Status OrderList_sq(SqList &L, int n);/*插入法生成递增有序表*/void MergeList_Sq(SqList La, SqList Lb, SqList &Lc );/*两个非递减有序表A和B,并把它们合并成一个非递减有序表C*/#endif // SQLIST_H_INCLUDEDSqList.cpp#include "SqList.h"void menu(){printf("\t\t\t 顺序表基本操作\n\n");printf("\t\t\t1.建立顺序表\n");printf("\t\t\t2.遍历顺序表\n");printf("\t\t\t3.删除第i 个元素\n");printf("\t\t\t4.删除值为x 的元素\n");printf("\t\t\t5.奇数排在偶数之前\n");printf("\t\t\t6.插入法生成递增有序表\n");printf("\t\t\t7.两个非递减有序表La和Lb合并成非递减有序表Lc\n");printf("\t\t\t0.退出\n\n");}/*初始化顺序表*/Status InitList_Sq(SqList &L, int n){L.elem=(ElemType*)malloc(n*sizeof(ElemType));if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=n;return OK;}/*建立顺序表*/Status CreateList_Sq(SqList &L){int n, i;printf("请输入顺序表长度:");scanf("%d", &n);if(InitList_Sq(L, n)){printf("请输入%d个元素:", n);for(i = 0; i < n; i++){scanf("%d", &L.elem[i]);L.length++;}return OK;}elsereturn ERROR;}/*输出顺序表*/void PrintList_Sq(SqList L){int i;printf("顺序表中元素为:\n");for(i = 0; i < L.length; i++){printf("%d ", L.elem[i]);}printf("\n");}/*删除第i个元素*/Status DeleteList_Sq(SqList &L,int i,ElemType &e){ElemType *p, *q;if( (i<1) || (i>L.length) ) return ERROR;p = &(L.elem[i-1]);e = *p;q = L.elem+L.length-1;for(++p; p <= q; ++p) *(p-1) = *p;--L.length;return OK;}/*删除值为x的元素,删除成功返回OK,删除失败返回ERROR*/ Status DeleteListX_Sq(SqList &L,ElemType x){ElemType *p, *q;}/*奇数排在偶数之前*/Status AdjustList_Sq(SqList &L)ElemType *p, *q;int temp;return OK;}/*插入法生成递增有序表,有序表生成成功返回OK,失败返回ERROR*/ Status OrderList_sq(SqList &L, int n){int i, j, x; /*x表示每次待插入的元素*/}/*两个非递减有序表A和B,并把它们合并成一个非递减有序表C*/void MergeList_Sq(SqList La, SqList Lb, SqList &Lc ){ElemType *pa, *pb, *pc, *pa_last, *pb_last;pa = La.elem; pb = Lb.elem;Lc.listsize = Lc.length = La.length+Lb.length;pc = Lc.elem = (ElemType *)malloc(Lc.listsize * sizeof(ElemType));if (!Lc.elem) exit (OVERFLOW);pa_last = La.elem + La.length - 1;pb_last = Lb.elem + Lb.length - 1;while (pa <= pa_last && pb <= pb_last){if (*pa <= *pb) *pc++ = *pa++;else *pc++ = *pb++;}while(pa <= pa_last) *pc++ = *pa++;while(pb <= pb_last) *pc++ = *pb++;}main.cpp#include "SqList.h"int main(){int choice, n, i, x;SqList L, La, Lb, Lc;while(1){menu();printf("选择你的操作:");scanf("%d",&choice);switch(choice){case 1:if(CreateList_Sq(L))printf("顺序表创建成功\n");elseprintf("顺序表创建失败\n");break;case 2:PrintList_Sq(L);break;case 3:printf("请输入删除元素的位置:");scanf("%d", &i);if(DeleteList_Sq(L, i, x))printf("被删除元素值为:%d\n",x);elseprintf("删除失败\n");break;case 4:printf("请输入删除元素值:");scanf("%d", &x);if(DeleteListX_Sq(L, x))printf("删除成功\n");elseprintf("删除失败\n");PrintList_Sq(L);break;case 5:AdjustList_Sq(L);printf("新链表为:\n");PrintList_Sq(L);break;case 6:printf("请输入顺序表长度:");scanf("%d", &n);if(OrderList_sq(L, n)){printf("值有序顺序表为:\n");PrintList_Sq(L);}elseprintf("顺序表创建失败\n");break;case 7:printf("请输入顺序表La的长度:");scanf("%d", &n);OrderList_sq(La, n);printf("请输入顺序表Lb的长度:");scanf("%d", &n);OrderList_sq(Lb, n);MergeList_Sq(La, Lb, Lc);printf("合并后的顺序表为:\n");PrintList_Sq(Lc);break;case 0:return 0;default:printf("输入错误,请重新输入\n");}}}实验02 单链表的基本操作实验学时:2学时实验类型:上机背景知识:单链表的插入、删除及应用。

相关文档
最新文档