2010-12-01 4 views
0

다음은 더 큰 값을 버블 링하지 않는 코드입니다. 어느 한 가지 도움을 줄 수 있습니까? 문제는 카운트 ++에서 다소 있습니다.힙에 노드를 삽입하는 동안 거품을 사용하는 방법?

#include<iostream> 
using namespace std; 

class heap{ 
public: 
    int count; 
    heap(int c) 
    { 
     count=c; 
    } 
    int Arr[10]; 
    void insert(int num); 
    void deletemax(); 
    void print(); 
}; 

void heap::insert(int num){ 
    if(count==10){ 
     cout<<"Heap full\n"; 
     exit(1); 
    } 
    else{ 
     Arr[count]=num; 
     count++; //The real problem arises here that the compiler adds 1 to count and when the code moves ahead it sets position var to count++ value and tries to compare a value at Arr[POS] with its parent whereas there is no value at this place set uptill. 
    } 
    int POS=count; 
    while(Arr[POS]>Arr[(POS-1)/2]){ 
     int temp; 
     temp=Arr[POS]; 
     Arr[(POS-1)/2]=temp; 
     POS=(POS-1)/2; 
    } 
} 

void heap::print(){ 
    for(int i=0; i<10; i++){ 
     cout<<Arr[i]<<endl; 
    } 
} 

int main(){ 
    heap h(0); 
    int a; 
    int b=0; 
    while(b<10){ 
     cout<<"Insert node in heap\n"; 
     cin>>a; 
     h.insert(a); 
     b++; 
    } 
    h.print(); 
    return 0; 
} 
+1

위로 올린 서식을 수정하십시오. –

+3

당신이있는 동안 질문을 시도하십시오. –

+1

나는 내 눈을 아프기까지 이걸 보지 않는다. 서식을 수정하십시오. 다른 한편으로 이것은 실제 질문이없는 코드의 큰 벽처럼 보이므로 어쨌든 나는 보지 않을 것입니다. –

답변

1

나는 그것이 귀하의 문제가되는 곳입니다.

+0

나는 그곳에서 무엇을 해야하는지 알지 못한다. – Salar

1

포함 일부 사용자가 게시 된 코드, 많은 문제가 있습니다 : 당신의 특정 문제에 관해서는

  1. 는, 나는 "당신이 에() : 힙 라인을 변경 삽입해야 거라 생각 int POS = count-1; "을 사용하여 배열의 뒤에서 반복을 시작하십시오.
  2. 빈 배열에 요소를 추가하고 정렬 코드에서 어떤 일이 발생하는지 고려해야합니다.
  3. 생성자를 사용하면 누군가가 고정 크기 배열을 오버플로하는 힙을 만들 수 있습니다 (예 : 힙 (1000)). 또한 Arr 구성원이 초기화되지 않았습니다. 즉, 값이 정의되지 않은 데이터가 있음을 의미하지만 힙 (0)입니다. 이 경우 생성자는 매개 변수를 가져 오지 않아야하며 개수를 0으로 초기화해야합니다.
  4. 코드 목적이 혼란 스럽습니다. 힙, 정렬 된 배열, 힙을 배열로 근사하려는 시도입니까? 단순히 고정 크기의 정렬 된 배열을 구현하려는 경우 insert()의 정렬 코드가 작동하지 않을 것이라고 생각합니다 (예 : [1,2,3]가 포함 된 힙에 100을 추가하는 것을 고려하십시오).

STL 컨테이너, 공용 클래스 멤버, 비 const 매개 변수 전달, "표준 사용"등을 사용하지 않는 것과 같은 다른 기본적인 것들이 있습니다. 그러나 저는 여러분에게 가정합니다. 여기에서 단순히 실험/노는 것입니다.

관련 문제