我是靠谱客的博主 喜悦灰狼,最近开发中收集的这篇文章主要介绍顺序表的优先遍历,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要求:先输出中点的元素值,再输出中点左部的元素值,再输出中点右部的元素值。
递归法: 1.注意递归的出口条件 left>right;
              2.只需要处理好一个问题,再用递归处理其余模式相同的小问题。

程序如下:

#include <stdio.h>
#include <stdlib.h>
#define Max 100

typedef int datatype;

typedef struct {
    datatype A[Max];
    int size;
}List;

void creat(List * P)
{
    int i=0;
    int m;
    printf("ÇëÊäÈëÔªËØn");
    scanf("%d",&m);
    while(m!=-1)
    {
        P->A[i++]=m;
        P->size++;
        scanf("%d",&m);
    }
}

void init(List * p)
{
    p->size=0;
}

void display(List A)
{
    int i;
    for(i=0;i<A.size;i++)
    {
        printf("%5d",A.A[i]);
    }
}

void display1(List p,int left,int right)
{
    int mid;
    if(left<=right)// 注意递归的出口条件
    {
        mid=(left+right)/2;
        printf("%5d",p.A[mid]);
        display1(p,left,mid-1); //先用递归输出中点左边的值
        display1(p,mid+1,right);  // 再用递归输出中点右边的值
    }
}

int main()
{
    List p;
    init(&p);
    creat(&p);
    display(p);
    printf("n");
    display1(p,0,p.size-1);
    return 0;
}

最后

以上就是喜悦灰狼为你收集整理的顺序表的优先遍历的全部内容,希望文章能够帮你解决顺序表的优先遍历所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部