我是靠谱客的博主 背后小虾米,最近开发中收集的这篇文章主要介绍数据结构C语言版(李云清)实验5 递归实验5 递归,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

实验5 递归

1、 编写递归算法int max(int a[],int left, int right),求数组a[left…right]中的最大数。

#include "ArrayIo.h"
/*请将本函数补充完整,并进行测试*/
int max(int a[],int left,int right)
{
    int lmax,rmax,mid;
    if (left==right) return a[left];
      else
      {
          mid=(left+right)/2;
          lmax=max(a,left,mid);
          rmax=max(a,mid+1,right);
          return lmax>rmax?lmax:rmax;
      }

}
int main()
{   int a[10];
    input(a,10);
    print(a,10);
    printf("数组的最大数是:%dn",max(a,0,9));
    return 0;
}

2、请编写一个递归算法函数void partion(int a[], int left, int right),将数组a[left…right]中的所有奇数调整到表的左边,所有偶数调整到表的右边。

#include "ArrayIo.h"
#define N 10
/*请将本函数补充完整,并进行测试*/
void partion(int a[], int left,int right)
{
    int x;
   if (left<right)
   {
       while (left<right && a[left]%2==1)
            left++;
       while (left<right && a[right]%2==0)
            right--;
       if (left<right)
       {
            x=a[left];
            a[left]=a[right];
            a[right]=x;
            partion(a,left+1,right-1);
       }
   }

}
int main()
{   int a[N];
    init(a,N);				/*随机产生N个数*/
    print(a,N);
    partion(a,0,N-1);
    print(a,N);
    return 0;
}

3、请编写递归函数void bubbleSort(int a[],int n),对长度为n的数组采用冒泡法进行升序排序。请编写递归函数int binSearch(int a[], int left, int right,int key),采用二分查找法在数组a[left…right]中查找值为key的元素所在的位置, 若查找失败函数返回-1。

#include "ArrayIo.h"
#define N 10
/*请将本函数补充完整,并进行测试*/
void bubbleSort(int a[],int n)
{    int i,t;
      int flag;
      if(n>0)
      {
          flag=0;
          for(i=0;i<n-1;i++)
          {
              if(a[i]>a[i+1])
              {
                 t=a[i];
                 a[i]=a[i+1];
                 a[i+1]=t;
                 flag=1;
              }
          }
          if (flag==1) bubbleSort(a,n-1);
      }
      return ;
}
int binSearch(int a[], int left,int right,int key)
{
    int mid;
    if (left>right)
            return -1;
    else
    {
        mid=(left+right)/2;
        if (a[mid]==key)
                return mid;
        else
            if (key<a[mid])
                return binSearch(a,left,mid-1,key);
            else
                return binSearch(a,mid+1,right,key);
    }
}
int main()
{   int x,pos,a[N];
    init(a,N);
   	bubbleSort(a,N);
    print(a,N);
    printf("请输入要查找的数:n");
    scanf("%d",&x);
    pos=binSearch(a,0,N-1,x);
    if (pos!=-1) printf("a[%d]=%dn",pos,x);
    else printf("Not found!n");
    return 0;
}

4、已知带头结点的单链表结构定义同实验3,假设链表中所有结点值均不相同,请编写一个递归函数linklist max(linklist head),返回表中最大数所在的结点地址,若链表为空,返回NULL。

#include "slnklist.h"
/*请将本函数补充完整,并进行测试*/
linklist max(linklist head)
{
    linklist m;
    if (head->next==NULL)
            return NULL;
    else
        if (head->next->next==NULL)
            return head->next;
        else
        {
            m=max(head->next);
            return head->next->info > m->info ? head->next:m;
        }
}
int main()
{   linklist head,p;
    head=creatbyqueue();
    print(head);
    p=max(head);
    if (p)
        printf("max=%dn",p->info);
    else
        printf("链表为空n");
    return 0;
}

最后

以上就是背后小虾米为你收集整理的数据结构C语言版(李云清)实验5 递归实验5 递归的全部内容,希望文章能够帮你解决数据结构C语言版(李云清)实验5 递归实验5 递归所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部