文档介绍:
江西师范大学计算机信息工程学院学生实验报告
专业_网络工程2班姓名_吴睿_ 学号1308093095 日期__2014.12.10
课程名称
数据结构
实验室名称
X4313
实验名称
递归
指导教师
左正康
成绩
实验目的
1.理解递归程序的执行过程
2.掌握应用递归进行问题求解的基本方法
3.应用递归技术对线性表问题进行问题求解
实验原理和内容
基于ArrayIo.h文件中定义的单链表表,完成实验1~4。
实验:
编写递归算法int max(int a[],int left, int right),求数组a[left..right]中的最大数。
请编写一个递归算法函数void partion(int a[], int left, int right),将数组a[left..right]中的所有奇数调整到表的左边,所有偶数调整到表的右边。
请编写递归函数void bubbleSort(int a[],int n),对长度为n的数组采用冒泡法进行升序排序。请编写递归函数int binSearch(int a[], int left, int right,int key),采用二分查找法在数组a[left..right]中查找值为key的元素所在的位置,若查找失败函数返回-1。
4.已知带头结点的单链表结构定义同实验3,假设链表中所有结点值均不相同,请编写一个递归函数linklist max(linklist head),返回表中最大数所在的结点地址,若链表为空,返回NULL。
实验步骤
在visual C++ 6.0中进行编程,调试,完成实验。
程序及运行结果(或实验数据记录及分析)
实验1:
int mymax(int a[],int left,int right)
{
int best;
best=left;
while(left<=right)
{
if(a[best]
{
best=left;
mymax(a,++left,right);
}
else
{
mymax(a,++left,right);
}
}
return a[best];
}
实验2
void partion(int a[], int left,int right)
{
int temp;
if(a==NULL)
return;
else
{
while(left
{
while(a[left]%2==1)
{
left++;
}
while(a[right]%2==0)
{
right--;
}
if(left
temp=a[left];
a[left]=a[right];
a[right]=temp;
}
}
}
}
实验3
void bubbleSort(int a[],int n)
{
int i,temp;
if(n<2)
return;
for(i=0;i
if(a[i]>a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+
内容来自淘豆网www.taodocs.com转载请标明出处.