예제 #1
0
void testInsert(void) {
    printf("Running insert test\n");
    Heap heap = setupUnorderedHeap();
    makeMaxHeap(heap);
    deleteFromHeap(heap, 4);
    insertIntoHeap(heap, newNode(14));
    if (!isMaxHeap(heap) || heap->numNodes != 10) {
        printFailed("Not a max heap after deleting 4 and inserting 14");
        return;
    }

    deleteFromHeap(heap, 1);
    insertIntoHeap(heap, newNode(5));
    if (!isMaxHeap(heap) || heap->numNodes != 10) {
        printFailed("Not a max heap after reinserting 4");
        return;
    }
    printPassed();
}
예제 #2
0
void testDelete(void) {
    printf("Running delete test\n");
    Heap heap = setupUnorderedHeap();
    makeMaxHeap(heap);
    deleteFromHeap(heap, 4);
    if (!isMaxHeap(heap) || heap->numNodes != 9) {
        printFailed("Not a max heap after deleting 4");
    }
    printPassed();
}
예제 #3
0
/*
 * isMaxHeap
 * check whether it is a max-heap
 * return true if it's a max-heap, false when it's not
 * and -1, input heap doesn't exist
 */
int isMaxHeap(heap_t* heap, int pos){
    if(!heap){
        return -1;
    }
    
    int left = pos * 2;
    int right = left + 1;
    
    if( left > heap->size ) return true;
    if( heap->element[left] > heap->element[pos]) return false;
    if( right <= heap-> size ) {
        if( heap->element[right] > heap->element[pos]) return false;
        
        isMaxHeap(heap, right);
    }
    
    isMaxHeap(heap, left);
    
    return true;
}
예제 #4
0
//testNum만큼 heapify를 검사하는 함수
void testIter(int testNum)
{
	for( int i = 0; i < testNum; ++i )
	{
		heap_t* testHeap = makeSampleMaxHeap();
		_ASSERT( isMaxHeap( testHeap ) );
		if( testHeap != nullptr )
		{
			delete testHeap;
			testHeap = nullptr;
		}
	}
}
예제 #5
0
//MaxHeapify된 Heap을 출력하고 MaxHeap이 맞는지 출력하는 함수
void test_heapify()
{
	heap_t* testHeap = makeSampleMaxHeap();
	printHeap( testHeap );
	char* strIsMaxHeap = isMaxHeap( testHeap ) ? "This is Max Heap." : "This is not Max Heap.";
	printf( "%s\n" , strIsMaxHeap );

	if( testHeap != nullptr )
	{
		delete testHeap;
		testHeap = nullptr;
	}
}
예제 #6
0
void testHeapify(heap_t* heap){
    puts("\n<BEFORE Heapify>");
    printHeap(heap);
    max_heapify(heap, 1);
    
    puts("<AFTER Heapify>");
    int result = isMaxHeap(heap, 1);
    if(result<0) printf("Wrong input.\n");
    else if(result) printf("Turned into MAX-HEAP\n");
    else printf("NOT MAX-HEAP\n");
    printHeap(heap);
    puts("=================\n");
    
    return;
}