sub23_i.cpp
来自「STRUCTURI DE DATE SI ALGORITMI」· C++ 代码 · 共 82 行
CPP
82 行
#include<stdio.h>
#include<conio.h>
#define DIMMAX 1000
int tab[DIMMAX+1];
void preordine(int,int);
int max(int,int);
int test_heap(int,int);
void extr(int,int);
void main()
{
int n,c=0;
clrscr();
printf("\nIntrare :");
scanf("%d",&n);
tab[1]=n;
while(n!=0)
{
c++;
scanf("%d",&n);
if(n!=0)
tab[c+1]=n;
}
printf("\nIesire :");
printf("\n\tPreordine :");
preordine(1,c);
if(test_heap(1,c)==1)
printf("\n\tArborele este HEAP!");
else
printf("\n\tArborele NU este HEAP!");
printf("\nSirul ordonat :");
extr(1,c);
getch();
}
void preordine(int i,int n)
{
if(i<=n &&tab[i]!=0)
{
printf(" %d",tab[i]);
preordine(2*i,n);
preordine(2*i+1,n);
}
}
int max(int i,int n)
{
int m=0;
while(i<=n)
{
if(tab[i]>m)
m=tab[i];
i++;
}
return m;
}
int test_heap(int i,int n)
{
while(i<=n &&tab[i]!=0)
if(max(2*i,n)<tab[i] && max(2*i+1,n)<tab[i])
i++;
else
return 0;
return 1;
}
void extr(int i,int n)
{
while(i<n)
{
printf(" %d",tab[i]);
if(tab[2*i]>tab[2*i+1])
extr(2*i,n);
else
extr(2*i+1,n);
i++;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?