Advertisement
Guest User

Idan

a guest
Jun 23rd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. void swapFrame(list_t** list)
  2. {
  3.     list_t* curr = NULL, *targetP = NULL, *newP = NULL, *tmpTarget = NULL, *tmpNew = NULL;
  4.     char target[MAX_NAME_SIZE] = { 0 };
  5.     int index = 0, counter = 0;
  6.     printf("enter the name of the frame\n");
  7.     getString(target, MAX_NAME_SIZE);
  8.     if (!frameExist(*list, target) || *list == NULL)
  9.     {
  10.         printf("this frame does not exist\n");
  11.     }
  12.     else
  13.     {
  14.         index = getValidIndex(*list);
  15.         curr = *list;
  16.         if (!strcmp(target, (*list)->frame->name))
  17.         {
  18.             targetP = *list;
  19.         }
  20.         else if (index == 1)
  21.         {
  22.             newP = *list;
  23.         }
  24.         while (curr->next && (!targetP || !newP))
  25.         {
  26.             counter++;
  27.             if (!targetP && !strcmp(target, curr->next->frame->name))
  28.             {
  29.                 targetP = curr;
  30.             }
  31.             if (!newP && counter + 1 == index)
  32.             {
  33.                 newP = curr;
  34.             }
  35.             curr = curr->next;
  36.         }
  37.         if (newP != targetP)
  38.         {
  39.             if (targetP == *list)
  40.             {
  41.                 tmpNew = newP->next->next;
  42.                 tmpTarget = targetP->next;
  43.                 (*list) = newP->next;
  44.                 (*list)->next = tmpTarget;
  45.                 newP->next = targetP;
  46.                 targetP->next = tmpNew;
  47.             }
  48.             else if (newP == *list)
  49.             {
  50.                 tmpNew = newP->next;
  51.                 tmpTarget = targetP->next->next;
  52.                 (*list) = targetP->next;
  53.                 (*list)->next = tmpNew;
  54.                 targetP->next = newP;
  55.                 targetP->next->next = tmpTarget;
  56.             }
  57.             else
  58.             {
  59.                 tmpNew = newP->next->next;
  60.                 tmpTarget = targetP->next->next;
  61.                 newP->next->next = tmpTarget;
  62.                 targetP->next->next = tmpNew;
  63.                 tmpTarget = targetP->next;
  64.                 tmpNew = newP->next;
  65.                 newP->next = tmpTarget;
  66.                 targetP->next = tmpNew;
  67.             }
  68.         }
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement