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 + -
显示快捷键?