mishe ye barname ba derakht vasam befrestin
faghat derakhtesh dodoee nabashe
me30
faghat derakhtesh dodoee nabashe
me30
#include <stdio.h> #include <conio.h> #include <stdlib.h> #define n 30 // Size of array #define InputNumbers 9 #define FatherNode MinHeapArray[i] #define LeftChild MinHeapArray[2*i] #define RightChild MinHeapArray[2*i+1] // Functions and Subroutines int NewNumber(); int NeedToSort(int index, int NewNO); int SortMinHeapTree(int index); void PutToTree(int index); void ShowTree(); // Variables int MinHeapArray[n]={0}; // Define an array for tree int idx=0; int i; // For loops /***********************************************************************/ int NewNumber() { unsigned int tmpNO; printf("\n%d) Enter a number ['0' = Cancel]: ",idx+1); scanf("%d", &tmpNO); return tmpNO; } /***********************************************************************/ void main(void) { clrscr(); // Clear Screen unsigned int tmpNewNO; // Temp variable to store new number for (i=1; i<=InputNumbers; i++) { tmpNewNO=NewNumber(); if (!tmpNewNO) exit(0); PutToTree(tmpNewNO); if (NeedToSort(idx, tmpNewNO)) { printf("\n>> SORTING...\n"); SortMinHeapTree(idx); } ShowTree(); }// for SortMinHeapTree(idx); printf("\n*** Final Result ***\n"); ShowTree(); printf("\nHit any key to exit...."); getch(); } /***********************************************************************//***********************************************************************/ void PutToTree(int index) { MinHeapArray[++idx] = index; } /***********************************************************************/ int NeedToSort(int index, int NewNO) { //printf("\nIDX = %d\n", index); int tmpIdx=index; if (!tmpIdx) return 0; else if (tmpIdx == 2) { if (MinHeapArray[tmpIdx-1]>NewNO) return 1; else return 0; } else //Index >= 2 { if (MinHeapArray[tmpIdx-2]>NewNO) return 1; else return 0; } } /***********************************************************************/ void ShowTree() { int i; printf("\n>> NODES VALUE: "); for (i=1; i<=n; i++) if (MinHeapArray[i] != 0) printf("%d | ", MinHeapArray[i]); else break; printf("\n"); } /***********************************************************************/ int SortMinHeapTree(int index) { int i; int tmp; for(i=index; i>=1; i--) { // if (!FatherNode) return 0; // if (!RightChild && !LeftChild) return 0; if (FatherNode > LeftChild && LeftChild != 0) { tmp = FatherNode; FatherNode = LeftChild; LeftChild = tmp; } else if (FatherNode > RightChild && RightChild != 0) { tmp = FatherNode; FatherNode = RightChild; RightChild = tmp; } printf("\n Father: %d \t\t LeftChild: %d \t\t RightChild: %d\n",FatherNode,LeftChild,RightChild); }//for }//void
دیدگاه