数据结构与算法实验指导实验十
数据结构与算法实习_实验指导书
数据结构与算法实习_实验指导书
数据结构与算法课程实习
实验指导书
目录
实验一顺序表的基本操作 (2)
实验二链表的基本操作 (3)
实验三二叉树的基本操作 (4)
实验四综合应用 (5)
附录A 实验报告示例 (9)
附录B实验报告封面、评语得分表 (12)
实验一顺序表的基本操作
【实验目的】
1、掌握顺序存储的概念,学会对顺序表的基本操作。
2、加深对顺序存储数据结构的理解,逐步培养解决实际问题的能力。
【实验性质】
设计型实验
【实验内容】
1、实现顺序表显示;
2、实现顺序表插入;
3、实现顺序表查找(显示比较次数);
4、实现顺序表删除(显示移动次数);
5、实现顺序表排序(分别实现简单选择、快速,显示比较次数、移动次数);
6、实现顺序表的折半查找(显示比较次数);
7、编程实现一个顺序表的就地逆置,即利用原表的存储空间将顺序表逆置;
8顺序表有序插入(显示比较次数、移动次数),
屏幕提示后,从键盘输入一个元素值,在经过排序的线性表中插
入这个元素;
屏幕显示比较次数和移动次数,应有溢出判断和报告;
9、要求以较高的效率实现删除顺序表中元素值在x到y(x和y自定)之间的所有元素;
10、编程实现将两个非递减的顺序表进行合并,要求同样的数据元素只出现一次;
*11、编程实现顺序表的shell排序(步长为5, 3,1);
*12、编程实现堆排序算法;
*13、利用三元组顺序表存储矩阵,实现矩阵的转置(请独立写程序实现)。
【实验环境】
VC++ 6.0
【实验要求】
将如上文件保存在命名为学号+姓名”勺文件夹中并上传到指定的服务器。
实验二链表的基本操作
数据结构与算法实验指导书电子商务
《数据结构与算法》实验指导书
Competency Training of Data Structure and Algorithm
前修课程:高级语言程序设计、离散数学
一、实验技能训练的目的与要求
通过本课程的实践,学生应掌握链表等复杂的数据结构及相关的性质和算法,熟练使用C++语言的基本语法编写应用程序。
二、相关课程
本课程为“数据结构与算法”配套实验课程。
三、实验技能训练的主要内容和学时安排
本技能训练是《数据结构与算法》课程的配套实践课程,内容为各种数据结构及相关算法,包括顺序表、链表、堆栈、树、图、排序、查找等内容。
四、各项技能训练的目的、内容
1、顺序表2学时实验目的:
掌握顺序表的定位、插入、删除等操作。
实验内容:
(1)编写一个逐个输出顺序表中所有数据元素的成员函数。并编写主函数测试结果。
(2)编写顺序表定位操作的成员函数顺序表中查找是否存在数据元素x,如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号从0开始编号);如果
不存在,返回-1。并编写主函数测试结果。
(3)在递增有序的顺序表中插入一个新结点x,保持顺序表的有序性。
(4)删除顺序表中所有等于X的数据元素。
2、单链表2学时实验目的:
掌握单链表的定位、插入、删除等操作。
实验内容:
(1)编写一个逐个输出单链表中所有数据元素的成员函数。并编写主函数测试结果。
(2)在递增有序的单链表中插入一个新结点x,保持单链表的有序性。
(3)编写实现带头结点单链表就地逆置的成员函数,并编写主函数测试结果。
3、堆栈和队列2学时实验目的:
a) 掌握应用栈解决问题的方法。
数据结构实验指导书(新版)
《数据结构和算法》
实验指导书
实验及学时数分配
序号实验名称学时数(小时)
1 实验一线性表 4
2 实验二树和二叉树 2
3 实验三图 2
4 实验四查找 2
5 实验五内部排序 2
合计12
几点要求:
一、上机前:认真预习相关实验内容,提前编写算法程序,上机时
检查(未提前编写程序者,扣除平时成绩中实验相关分数)。二、上机中:在Turbo C或VC6.0环境中,认真调试程序,记录调
试过程中的问题、解决方法以及运行结果。上机时签到;下机时验收签字。
三、下机后:按要求完成实验报告,并及时提交(实验后1周内)。
实验一线性表
【实验目的】
1、掌握用Turbo c上机调试线性表的基本方法;
2、掌握线性表的基本操作,插入、删除、查找以及线性表合并等运算在顺序存储结
构和链式存储结构上的运算;
3、运用线性表解决线性结构问题。
【实验学时】
4 学时
【实验类型】
设计型
【实验内容】
1、顺序表的插入、删除操作的实现;
2、单链表的插入、删除操作的实现;
3、两个线性表合并算法的实现。(选做)
【实验原理】
1、当我们在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线
性表中第i个元素之后的所有元素依次后移一个位置,以便腾出一个位置,再把
新元素插入到该位置。若是欲删除第i个元素时,也必须把第i个元素之后的所有
元素前移一个位置;
2、当我们在线性表的链式存储结构上的第i个位置上插入一个元素时,只需先确定
第i个元素前一个元素位置,然后修改相应指针将新元素插入即可。若是欲删除
第i个元素时,也必须先确定第i个元素前一个元素位置,然后修改相应指针将该
数据结构与算法实验报告
《数据结构与算法》
综合实验报告
系别:
专业:
学生姓名:
指导教师:
2011年 11月 25日
实验目的
掌握线性表的建立、插入、删除算法;
掌握查找算法;
掌握排序算法;
实验要求
使用C语言(环境任意)开发程序,能够对用户输入的任意一组数据,建立一个线性表,可以输出此线性表。并且能够对此线性表进行插入、删除、查找、排序等操作。
程序流程
建表如下:
定义一个整型的数据类型data和next指针:
定义头指针和当前结点指针,申请连续空间将单个字节大小复制给头指针,把头指针赋值给当前节点指针:
若输入的数是0,则
若输入不为0,把输入的数赋值给已申请的新结点,把新结点赋给当前节点的next域,再把新结点赋值给当前结点,以此方法重复执行得到如下链表:
输出函数:
把头指针赋值给当前结点指针,当当前节点的next域不为空时输出当前节点所指向的数据,把当前结点的next域赋值给当前节点,否则输出链表为空
对此线性表进行插入、删除、查询、排序操作
把已申请的结点数据域指向所输入的数
再把插入w结点赋值头结点,是插入的位置,如果w=0则插入结点的next域赋值给头结点否则如果w>表长,则输出超出范围
代码及运行结果(主要语句要求有注释)
#include"stdafx.h"
#include<stdio.h>
#include<malloc.h>
#define NULL 0
typedef struct linknode
{
int data;
struct linknode *next;
}node;
node *head;
数据结构与算法与实践数据结构实践实验指导书参考
《数据结构实践》实验指导书
2013年8月
目录
实验一 C语言编程复习 (3)
实验二线形表基本操作的实现 (5)
实验三栈和队列基本操作的实现及应用 (15)
实验四二叉树算法的实现 (30)
实验五图的算法的实现 (46)
实验六查找算法的实现 (66)
实验七排序算法的实现 (78)
实验一 C语言编程复习
一、实验目的
1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。
2.理解指针与应用的区别。
3.掌握结构体的使用。
4.掌握简单排序方法。
二、实验内容
1、使用指针和引用两种方式,完成两个学生的交换。
2、写一函数,根据成绩,对包含有n个学生的数组进行排序。
三、实验步骤
1. 定义一个Student的结构体类型,包含学号、姓名、成绩等成员。
2. 分别写Swap1(Student *s1, Student *s2) 和Swap2(Student &s1, Student &s2),完成两个学生的交换。
3.写一排序函数SortStu(Student *s, int n),使用冒泡或者简单选择排序算法根据成绩完成学生的排序。
四、实现提示
struct Student
{
char name[20]; //姓名
char num[10]; //学号
float score; //成绩
};
void Swap1(Student *, Student *);//交换两个结构体变量(指针)
void Swap2(Student &, Student &);//交换两个结构体变量(引用)
void SortStu (Student *,int);//按成绩(高到低)排序
2010数据结构实验指导书
《数据结构》
实验指导书
齐晓轩编
沈阳大学信息工程学院
目录
实验一:C语言运行环境、算法设计 1 实验二:顺序表的基本操作 3 实验三:线性链表的基本操作 5 实验四:顺序栈的基本操作 6 实验五:队列的基本操作7 实验六:串的基本操作8 实验七:数组和矩阵11 实验八:二叉树的基本操作12 实验九:图13 实验十:查找14 实验十一:排序15
课程编号:1241331 课程类别:基础必修课
适用层次:本科
适用专业:计算机科学与技术计算机科学与技术(电子商务)
课程总学时:80 适用学期:第4学期
实验学时:30 开设实验项目数:11
撰写人:齐晓轩审核人:刘天惠教学院长:范立南实验一:C语言运行环境、算法设计
一、实验目的与要求
1.熟悉TC环境的组成及使用方法。
2.了解C语言程序从编辑、编译、连接到运行并得到运行结果的过程。
3.学习把算法改成C程序的方法。
二、实验类型
验证型
三、实验原理及说明
算法是指为了完成某一特定功能的指令序列,它阐述程序设计的总体思路。
四、实验仪器
安装C语言环境(TC或VC++)的计算机若干台
五、实验内容和步骤
1.在开始实验之前,先建立自己的工作目录,可用自己的班级加学号或姓名命名。
2.熟悉VC环境的组成及使用。
3.了解算法设计。
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
编写自大到小依次输出顺序读入的三个数X、Y和Z的值的程序,并在TC或VC++环境下调试通过,最后写出程序的运行结果。要求:包括主函数,排序函数和输出函数三部分。在主程序中任意输入三个数,调用排序函数进行排序,在输出函数中输出排序结果。
数据结构与算法(清华大学出版社,严蔚敏)实验讲义
实验内容与实验指导
长江大学电信学院计算机系列课程组 2006年8月25日
实验安排
பைடு நூலகம்
实验一:线性表的存储结构定义及基本操作(必做) 实验二:线性表的综合应用 (选做) 实验三:栈和队列的定义及基本操作(必做) 实验四:栈和队列的综合应用 (选做) 实验五:二叉树的定义及基本操作 (必做) 实验六:赫夫曼编码及其应用 (选做) 实验七:图及其应用 (选做) 实验八:最短路径和关键路径的研究与实现(选做) 实验九:查找和排序算法的实现 (选做)
实验内容与实验指导--计算机系列课程
(二)链表
1. 实验环境: 利用Visual C++集成开发环境进行 本实验的操作。 2. 实验步骤:
1) 启动VC++; 2) 新建工程/Win32 Console Application,选择输入位 置:如 “ d:\” ,输入工程的名称:如 “ linklistDemo” ; 按“ 确定” 按钮,选择“ An Empty Project” ,再按“ 完 成” 按钮, 3) 加载顺序表中的pubuse.h选中菜单的“ project” - >“ add to project”--->“ files” 选择已存在文件,确定, 然后一定将文件pubuse.h拷贝到所建的工程目录下;
实验内容与实验指导--计算机系列课程
数据结构与算法基础实验指导书
数据结构与算法基础实验指导书
实验1 线性表及其应用
实验目的
1.掌握线性表顺序存储结构的特点及线性表在顺序存储结构中各种基本操作的实现。
2.掌握线性表链式存储结构的特点及线性表在链式存储结构中各种基本操作的实现。
3.重点巩固和体会线性表在链式存储结构上的各种操作和应用。
实验要求
对学生要求:
1.掌握单向链表的存储特点及其实现。
2.掌握单向链表的插入、删除算法及其应用算法的程序实现。
3.掌握多项式的代数运算算法。
4.根据算法编写与实验内容相关的程序,要求该程序的多项式动态输入输出。
对实验指导教师要求:
1.掌握单向链表的存储特点及其实现。
2.掌握单向链表的插入、删除算法及其应用算法的程序实现。
3.编写并运行该题目程序代码,具有该题目的参考答案。
5.深刻理解题目内涵,能够清晰描述问题,掌握该题目涉及的知识点,指导学生实验时需要注意的问题。
实验内容
采用链式结构实现任意多项式的存储,求两个多项式的和。
实验评分标准
一.课堂表现(10分)
1.出勤情况(按时,迟到,早退,缺席)
2.是否遵守课堂纪律
二.实验结果(50分)
1.当堂按时完成(10)
2.独立完成(10),(和同学协商完成,在老师帮助下完成)3.结果正确无误(10)
4.功能齐全,界面美观,具有较好演示效果(10)
5.在源程序中有必要的注释和说明(5)
6.程序文档齐全(5)
三.实验报告(40)
1.对预习要求的回答(10)
2.实验过程中遇到的问题如何解决的(10)
3.实验的体会(10)
4.思考题(10)
实验2 树及其应用
实验目的
1.掌握树的链式存储方式及其操作实现(创建、遍历、查找等)。
实验:数据结构与算法
《数据结构与算法》实验
提交实验结果的要求:
实验完成后,将文件夹中的Debug文件夹删除,然后将整个文件夹打包成压缩文件,并以“学号姓名”的方式重命名,提交该压缩包。
实验1:VC环境的面向对象程序设计
实验目的:掌握VC环境下面向对象编程的基本步骤
实验准备:
1. 复习面向对象程序设计的有关概念
2. 阅读VC有关编程操作的说明
实验步骤及要求:
按照实验指导教师的指导,逐条完成以下要求:
1. 启动VC,新建空的控制台工程myproj,新建C++源程序文件main,查看目前文件夹中
有哪些文件
2. 新建一个名为CA的类,查看文件夹中新添了哪些文件
3. 为CA类添加1个int型私有数据成员x和1个char*型私有数据成员y
4. 在CA类的构造函数中添加代码,令x赋值为0,y赋值为空指针
5. 在CA类的析构函数中添加代码:如果y不是空指针,则释放y所指向的内存区域
6. 为CA增加带int型和char*型双参数的构造函数,在代码部分令x赋值为int型参数,令
y指向动态申请的内存空间(字节数为char*型参数所指字符串的串长加1),并将char*型参数所指字符串复制到新申请的空间中
7. 为CA类增加函数成员Display,用于显示x的值和y所向的指字符串
8. 编写下面的主函数,添加相应的#include预处理命令,并编译、运行程序:
void main( )
{
CA a,b(12,"abcdefg");
a.Display( );
b.Display( );
}
9. 在主函数main中添加以下三行:
a=b;
a.Display( );
数据结构实验指导书(新版)
《数据结构与算法》
实验指导书
实验及学时数分配
几点要求:
一、上机前:认真预习相关实验内容,提前编写算法程序,上机时
检查(未提前编写程序者,扣除平时成绩中实验相关分数)。二、上机中:在Turbo C或VC6.0环境中,认真调试程序,记录调
试过程中的问题、解决方法以及运行结果。上机时签到;下机时验收签字。
三、下机后:按要求完成实验报告,并及时提交(实验后1周内)。
实验一线性表
【实验目的】
1、掌握用Turbo c上机调试线性表的基本方法;
2、掌握线性表的基本操作,插入、删除、查找以及线性表合并等运算在顺序存储结
构和链式存储结构上的运算;
3、运用线性表解决线性结构问题。
【实验学时】
4 学时
【实验类型】
设计型
【实验内容】
1、顺序表的插入、删除操作的实现;
2、单链表的插入、删除操作的实现;
3、两个线性表合并算法的实现。(选做)
【实验原理】
1、当我们在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线
性表中第i个元素之后的所有元素依次后移一个位置,以便腾出一个位置,再把
新元素插入到该位置。若是欲删除第i个元素时,也必须把第i个元素之后的所有
元素前移一个位置;
2、当我们在线性表的链式存储结构上的第i个位置上插入一个元素时,只需先确定
第i个元素前一个元素位置,然后修改相应指针将新元素插入即可。若是欲删除
第i个元素时,也必须先确定第i个元素前一个元素位置,然后修改相应指针将该
元素删除即可;
3、详细原理请参考教材。
【实验步骤】
一、用C语言编程实现建立一个顺序表,并在此表中插入一个元素和删除一个元素。
数据结构与算法实验教程实验
1.1 数据结构与算法的计算环境
(实验估计时间:90分钟)
1.1.1 背景知识
除了进行科学计算之外,计算机已经被广泛地应用在控制、管理和数据处理等非数值计算的领域中。与此相应,处理对象也由早先纯粹的数值发展到字符、表格和图形图像等各种具有一定结构的数据,这给计算机程序设计带来了新的问题。为了编写一个“好”的程序,必须明确处理对象的特征及各对象之间的关系。这就是“数据结构”这门学科形成和发展的背景。
任何实际问题只有建立了数学模型才可以被计算机计算,而数据结构就是实际问题中操作对象 (元素) 的数学抽象,算法则是建立和解决数学模型的方法。
数据结构用来反映计算机加工处理的对象,即数据的内部构成,即数据由哪几部分构成,以什么方式构成,呈什么样的结构等。数据结构包括逻辑结构和物理结构。这里的逻辑结构和物理结构是指一个事物的两个方面,而不是指两个不同的对象。逻辑结构反映数据元素之间的逻辑关系,而物理结构反映了数据元素在计算机内部的存储安排,也称为存储结构。
数据结构是数据存在的形式,也是信息的一种组织方式,其目的是为了提高算法的效率。数据结构通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。由于相同算法中的抽象数据类型用不同的数据结构来表示,会造成不同的执行效率,这就有必要来研究不同数据结构表示的效率差异及其适用场实验
1 数据结构和算法分析基础
2 数据结构与算法实验教程合。
1. 数据结构的研究对象
数据结构主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。因此,主要有3个方面的内容,即数据的逻辑结构、数据的存储(物理) 结构和对数据的操作(或算法) 等。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的存储结构。
数据结构实验报告10
计算机科学与工程学院《算法与数据结构》实验报告(十)
ShellSort(OutOfOrder1,10);
print(OutOfOrder1,10);
cout<<endl;
cout<<"应用快速排序对“乱序”进行排序"<<endl;
QuickSort(OutOfOrder2,0,9);
print(OutOfOrder2,10);
cout<<endl;
return 0;
}
总结:
希尔排序为插入排序中的一种,其时间复杂度在最坏的情况下为O(n^2),在最好的情况下为O(n);
而快速排序为交换排序中的一种,其时间复杂度在最坏的情况下为O(n^2),在最好的情况下为O(nlog2n);
同时,两者都具有不稳定性。
实验内容
算法与数据结构实验指导手册 updated 2011.10.10
《算法与数据结构》 实 验 指 导 手 册
授课教师: 吴国仕教授
实验指导教师: 李 晶
教学对象: 二年级本科生
开课时间: 秋季学期
北京邮电大学软件学院
2011年8月
《算法与数据结构》实验指导手册
(2011年8月)
一. 实验一
1、实验名称及学时数
线性表2学时
2、实验目的
本次实验的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。同时,通过本次实验帮助学生复习高级语言的使用方法。3、实验内容
必做内容
1)城市链表
[问题描述]
将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名,城市的位置坐标。要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。[基本要求]
(1)创建城市链表;
(2)给定一个城市名,返回其位置坐标;
(3)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。
(4)在已有的城市链表中插入一个新的城市;
(5)更新城市信息;
(6)删除某个城市信息。
[测试数据]
由学生依据软件工程的测试技术自己确定。注意测试边界数据。
2)约瑟夫环
[问题描述]
约瑟夫(Joeph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。
数据结构实验指导书
数据结构实验指导书
一、实验目的
本实验旨在通过实践操作,加深对数据结构的理解,掌握数据结构的基本操作和算法设计。
二、实验内容
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. 设计栈和队列的数据结构,包括元素类型和相关操作。
3数据结构与算法实验报告-图
沈阳工程学院
学生实验报告
(课程名称:数据结构与算法)
实验题目:图
班级计算机121学号2012417116 姓名赵玉林地点F608 指导教师张欣
实验日期: 2013 年11 月28 日
一、实验目的
1.掌握图的基本存储方法。
2.掌握有关图的操作算法并用高级语言实现。
3.熟练掌握图的两种搜索路径的遍历方法。
4.掌握图的有关应用。
二、实验环境
Turbo C或是Visual C++
三、实验内容与要求
实验1 建立无向图的邻接矩阵或邻接表存储并输出
本题给出了一个无向图的邻接矩阵存储表示,在此基础上稍加改动就可以实现有向图、无向图和有向网的邻接矩阵表示。
实验2 建立图的邻接矩阵或邻接表存储并在此基础上实现图的深度优先遍历和广度优先遍历
图的广度优先遍历用非递归方法很容易理解,非递归方法需要辅助队列Q以及出队、入队函数。
四、实验过程及结果分析
源代码:
#include<stdio.h>
#include<malloc.h>
#define MAX_NUM 20
#define OK 1
#define ERROR -1
typedef int ElemType;
typedef char VertexType;
typedef struct ArcNode
{ //定义弧结点
ElemType data;
ArcNode *nextarc;
}ArcNode,*ArcLink;
typedef struct VNode
{ //定义顶点结点
VertexType data;
ArcLink firstarc;
《数据结构与算法》实验指导书.
《数据结构与算法》实验指导书.
《数据结构与算法》实验指导书
实验1 顺序表
一、实验目的
(1)掌握顺序表的逻辑结构、存储结构及描述方式。
(2)掌握顺序表的定位、插入、删除等操作。
二、实验要求
(1)调试程序要记录调试过程中出现的问题及解决办法;
(2)给出每个问题的算法或画出流程图;
(3)编写程序要规范、正确,上机调试过程和结果要有记录,并注意调试程序集成环境的掌握及应用,不断积累编程及调试经验;
(4)做完实验后给出本实验的实验报告。
三、实验设备、环境
奔腾以上计算机,装有Turbo C 2.0或Visual C++软件
四、实验步骤及内容
实验步骤:
1.根据题目,编写程序。
2.上机调试通过。
3.按照金陵科技学院实验报告格式,撰写各实验报告。
实验内容:
(1)编写一个函数print_all_data,该函数的作用是逐个输出顺序表中所有数据元素的值。编写主函数,从键盘输入顺序表,调用函数print_all_data,测试结果。
(2)编写顺序表定位操作函数locata,该函数的作用是在顺序表中查找是否存在数据元素的值与变量x的值相等。如果存在满足条件的数据元素,则返回顺序表中和x值相等的第1个数据元素在表中的下标;如果不存在,则返回-1。编写主函数,从键盘输入顺序表,以及变量x的值,调用函数locate,测试结果。
(3)编写一个函数insert,该函数的作用是在递增有序的顺序表
中插入一个新结点x,要求保持顺序表的有序性,输出插入前后顺序表状态。编写主函数,从键盘输入顺序表以及变量x的值,调用函数insert,测试结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include"stdio.h"
#include"stdlib.h"
#define NULL 0
#define maxsize 50
typedef struct node{
char data;
struct node *lchild,*rchild;
}Bitree;
int a[maxsize];
int temp=0;
Bitree *Q[maxsize];
Bitree *Creatree(){
char ch;
int front,rear;
Bitree *T,*S;
T=NULL;
front=1;rear=0;
printf("建立二叉树,以@表示虚节点,以#结束输入:\n");
ch=getchar();
while(ch!='#'){
S=NULL;
if(ch!='@'){ //@表示虚节点不是虚节点是建立新节点
S=(Bitree *)malloc(sizeof(Bitree));
S->data=ch;
S->lchild=S->rchild=NULL;
}
rear++;Q[rear]=S; //将虚节点指针NULL或新节点地址入队
if(rear==1)
T=S; //输入第一个节点为根节点
else{
if(S!=NULL&&Q[front]!=NULL)
if(rear%2==0)
Q[front]->lchild=S;
else Q[front]->rchild=S;
if(rear%2==1) front++; //节点Q[front]的两个孩子已经处理完毕,front+1
}
ch=getchar();
}
return T;
}
void Inorder(Bitree *T){ //中序遍历二叉树,并将每个结点数据存入数组中if(T!=NULL){
Inorder(T->lchild);
printf("%d\t",T->data);
Inorder(T->rchild);
a[temp]=T->data;
temp++;
}
}
int Judge_bitree(int a[]){ //判断是否是二叉树int i,flag=1;
for(i=0;i if(a[i]>a[i+1]){ flag=0; break; } } return flag; } void main(){ int b=Judge_bitree(a); Bitree *T; T=Creatree(); if(b==1) printf("给定二叉树是二叉排序树!\n"); if(b==0) printf("给定二叉树不是二叉排序树!\n"); }