Консультация № 178486
19.05.2010, 03:31
0.00 руб.
0 5 0
Помогите пожалуйста написать программу которая будет удалять вершину из пирамиды на Си под Linux.

Приложение:
Вот программа построения пирамиды из элементов заданного массива:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
#define n 10
int main()
{
int H[n];
int j,i1,i,V,k,l;
bool heap;
srand ((unsigned) time (NULL));
for (i=0; i<n; i++)
{
H[i]=rand()%10;
printf ("\n%d",H[i]);
}
l=n/2;
for (i=n/2; i>=1; i--)
{
k=i;
V=H[k];
heap=false;
while (!heap && 2*k<n)
{
j=2*k;
if (j<n)
{if (H[j]<H[j+1]) {j=j+1;}
if (V>=H[j])
{heap=true;}
else
{H[k]=H[j];
k=j;
H[k]=V;
}
}
}
}
for (i=0; i<n; i++)
{
printf("\n %d",H[i]);
}
return 0;
}

Обсуждение

давно
Профессор
230118
3054
20.05.2010, 10:09
общий
plopp:
Это программа сортировки, а не построения пирамиды. Что имеется в виду под удалением вершины?
Неизвестный
20.05.2010, 14:46
общий
Т.е. надо удалить корень пирамиды.
давно
Профессор
230118
3054
20.05.2010, 15:24
общий
plopp:
У пирамиды нет корней
Неизвестный
20.05.2010, 18:34
общий
Пирамида выглядит вот так
9
6 7
3 4 5 6
Нужно удалить 9
Удаление корня:
1. Меняем 9 с листом дерева и удаляем 9.
2. Уменьшаем размер дерева
3. Проводим парамидотизацию
Пример удаления:
9 1 8 8
8 6 => 8 6 => 1 6 => 5 6
2 5 1 2 5 9-удаляем ее 2 5 2 1
давно
Профессор
230118
3054
20.05.2010, 20:34
общий
plopp:
Это называется двоичное дерево.
Форма ответа