اطلاعیه

Collapse
No announcement yet.

برنامه نویسی درخت با C

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    برنامه نویسی درخت با C

    mishe ye barname ba derakht vasam befrestin
    faghat derakhtesh dodoee nabashe
    me30

    #2
    پاسخ : برنامه نویسی درخت با C

    سلام.

    اینم یه درخت MinHeap که خودم نوشتم... داده رو میگیره و MinHeap میده بیرون.


    کد:
    #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
    http://ceworld.ir/images/ads/dornablogcom_ads.gif

    دیدگاه


      #3
      پاسخ : برنامه نویسی درخت با C

      نوشته اصلی توسط mimo_fation
      mishe ye barname ba derakht vasam befrestin
      faghat derakhtesh dodoee nabashe
      me30
      سلام
      لطفا برای هر موضوع 1 تاپیک ایجاد بکنید
      پستهاتون رو بصورت فارسی ایجاد کنید
      عنوان مناسب با موضوع رو برای تاپیکتون انتخاب بکنید
      ممنون و متشکر از رعایت قوانین وب سایت

      دیدگاه

      لطفا صبر کنید...
      X