الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ممكن احد يساعدني

مغلق
بدأه CoMPuTeR-SCIeNCe في 28 يوليو 2005 · 3 رد · 401 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
/********************************************************************
Function prototypes.
********************************************************************/
void     Insert_1_Key            (TreePtr *);
void     Insert_Manually_Keys    (TreePtr *);
void     Insert_Random_Keys      (TreePtr *);
void     insert                  (TreePtr *,int);

/*******************************************************************
This function insert 1 key to tree.
*******************************************************************/

void Insert_1_Key (TreePtr *tree)
{
  TreePtr temp;
  int key;

  clrscr();
  printf("Plzzz enter key : \n");
  scanf("%d",&key);
  insert(*(&tree),key);
}
void insert (TreePtr *tree,int value)
{
   if ( *tree == NULL )    /* *treePtr is NULL */
  {
     *tree = malloc( sizeof( TreePtr ) );

    if ( *tree != NULL )
    {
  ( *tree )->data = value;
  ( *tree )->left = NULL;
  ( *tree )->right = NULL;
      }
      else
   printf( "%d not inserted. No memory available.\n",
   value );
   }
   else
      if ( value < ( *tree )->data )
  insert( & ((*tree)->left) , value );
     else if ( value > ( *tree )->data )
  insert( &(( *tree) ->right) , value );
      else
  printf( "dup" );
}

هاي لوسمحتم انا عندي داله اسمها insert شغاله مافيها شي بس لمن ادذلها باراميتر من Insert_1_Key ماتظبط وياي ممكن احد يساعدني ويوقولي ايش غلط وشكرا.

تم تعديل هذه المشاركة بواسطة HGB في 28 يوليو 2005 في 20:17

#2

فى بداية الامر على ما اعتقد ان الخطأ الذى يحدث لك عبارة عن exception

 
if ( *tree == NULL ) /* *treePtr is NULL */
{
*tree = malloc( sizeof( TreePtr ) );

 if ( *tree != NULL )
 {
	( *tree )->data = value;
	( *tree )->left = NULL;
	( *tree )->right = NULL;
 }

فى بداية الامر قلت ان لو الree==Null يبقى لازم ينشائها

وانت انشائتها عن طريق الحجز بدالة malloc ويبقى كدة لازم المستخدم يدخل القيم عن طريق

	( *tree )->data = value;
	( *tree )->left = NULL;
	( *tree )->right = NULL;
 }

ودة فى بداية تشغيل البرنامج يعنى لازم الuser يدخل القيم

حيث انت عملت بعد ان تم الحجز يختبر هل الtree موجودة ولا لأ ودة غير منطقى فى البداية ان أقول ان الtree مش موجودة كما بالسطر

If(*tree==NULL)

يعنى هية مش موجودة ثم أحجز وثم داخل ذلك الشرط اختبر هل هية موجودة ؟؟؟؟؟؟؟

تصحيح الخطأ

void insert (TreePtr *tree,int value)
{
if ( *tree == NULL ) /* *treePtr is NULL */
{
*tree = malloc( sizeof( TreePtr ) );

	( *tree )->data = value;
	( *tree )->left = NULL;
	( *tree )->right = NULL;
/* if ( *tree != NULL )
 {
	( *tree )->data = value;
	( *tree )->left = NULL;
	( *tree )->right = NULL;
 }
 else
 printf( "%d not inserted. No memory available.\n",
value );*/

}
else
if ( value < ( *tree )->data )
insert( & ((*tree)->left) , value );
else if ( value > ( *tree )->data )
insert( &(( *tree) ->right) , value );
else
printf( "dup" );
}

أعتقد ان الخطأ هنا

ويارب أكون أفدتك ويارب أكون قد صححت الخطأ

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#3

مشكور اخوي والله يخليك ذخر لنااا ^_^ والله يوفقق

#4

شكرا لك ياأخى اهم حاجة يارب سكون أستفدت وياريت ما تكونش زعلان من ردى فى المشاركة السابقة

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

هذا الموضوع مغلق.

مواضيع مشابهة