אני מנסה לכתוב פונקציה שמקבלת רשימה מקושרת , ומסירה

אני מנסה לכתוב פונקציה שמקבלת רשימה מקושרת , ומסירה

את האיברים (הערכים) האי-זוגיים מהרשימה המקורית, ובנוסף מחזירה כתובת של רשימה חדשה עם האיברים האי זוגיים (כלומר אותם איברים שהוסרו מהרשימה המקורית). זה מה שכתבתי-ניסיתי עד כה, ואשמח לעצתכם כיצד לתקן.
קוד:
typedef struct list{
      int data;
      struct  list* next;
} List;


List* removeOddValues(List** source)
{
      List* curr= source;
      List* prev;
      List* odd= NULL;

      while (curr)
      {
        if ((curr->data)%2!=0)
          {
           insertNodeToEnd(&odd, curr->data);
           prev->next = curr->next;
          }
        else
          {
           prev = curr;
           curr= curr->next;
          }
      }
     return odd;
}

List* createNewNode(int newData, List*  next)
{
       List* newNode = (List)calloc(1, sizeof(List));
       newNode->data = newData;
       newNode->next = next;

       return newNode;
}

void insertNodeToEnd(List** list, type  newData) //insert a new node to list //
{
       LNode* newNode = createNewNode(newData, NULL);

    list->next= newNode;

}
 

BravoMan

Active member
כמה עצות:

1. אם הקומפיילר מזהיר אותך שאתה מציב טיפוסים לא מתאימים אחד בתוך השני, שמע לעצתו ועל תעשה את זה!
&nbsp
2. כמות כוכביות היא לא דבר שרירותי!
אתה לא יכול לערבב בין כוכבית בודדת לשתי כוכביות.
&nbsp
3. נסה לעבור על הפונקציה שלך ידנית ולחשוב מה יקרה אם באיבר הראשון יהיה 3.
&nbsp
בהצלחה!
 
למעלה