edensheiko

Liked - list

Jan 31st, 2021 (edited)
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.57 KB | None | 0 0
  1. //@linked list be @edensheiko
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #include <stdio.h>
  4. #include <malloc.h>
  5. #include <assert.h>
  6.  
  7. typedef struct List    // linked list def
  8. {
  9.     int data;
  10.     struct item *next;
  11. }list;
  12.  
  13. int list_analyzer(list **even, list **odd);
  14.  
  15. void print_list(list *head);
  16.  
  17. void free_list(list *head);
  18.  
  19. void main()
  20. {
  21.     list *zogi;
  22.     list *ezogi;
  23.     int item = list_analyzer(&zogi,&ezogi);
  24.     printf("the amount of elemetns is %d \n", item);
  25.     printf("first list even: \n");
  26.     print_list(zogi);
  27.     printf("secand list odd:\n");
  28.     print_list(ezogi);
  29.     free_list(zogi);
  30.     free_list(ezogi);
  31.     system("pause");
  32. }
  33. int list_analyzer(list **even, list **odd)
  34. {
  35.     int temp;
  36.     int cout = 0; // used for countting elements
  37.     list *head_even = NULL;
  38.     list *curr_even = NULL;
  39.     list *head_odd = NULL;
  40.     list *curr_odd = NULL;
  41.     while (1)
  42.     {
  43.         printf("please enter value\n");
  44.         scanf("%d", &temp);
  45.         if (temp == -1)
  46.         {
  47.             break;
  48.         }
  49.         cout++;
  50.         if (temp % 2 == 0)
  51.         {
  52.             if (head_even == NULL)
  53.             {
  54.                 head_even = (list*)malloc(sizeof(list)); //utlizing the first elemnt
  55.                 assert(head_even); // Memory leak cheak
  56.                 curr_even = head_even; // curr gets head place
  57.                 head_even->data = temp; // util of temp to the head of list
  58.             }
  59.             else // if head_even has value so we just moving the data by one
  60.             {
  61.                 curr_even->next = (list*)malloc(sizeof(list)); //utlizing the sec elemnt
  62.                 assert(curr_even);// Memory leak cheak
  63.                 curr_even = curr_even->next;
  64.                 curr_even->data = temp;
  65.             }
  66.         }
  67.         else
  68.         {
  69.             if (head_odd == NULL)  // same as up just for the odd number
  70.             {
  71.                 head_odd = (list*)malloc(sizeof(list));
  72.                 assert(head_odd);
  73.                 curr_odd = head_odd;
  74.                 curr_odd->data = temp;
  75.  
  76.             }
  77.             else
  78.             {
  79.                 curr_odd->next = (list*)malloc(sizeof(list));
  80.                 assert(curr_odd);
  81.                 curr_odd = curr_odd->next;
  82.                 curr_odd->data = temp;
  83.             }
  84.         }
  85.  
  86.         //// null opttimzuer
  87.         //if (curr_odd)
  88.         //{
  89.         //  curr_odd->next = NULL;
  90.         //}
  91.         //if (curr_even)
  92.         //{
  93.         //  curr_even->next = NULL;
  94.         //}
  95.  
  96.  
  97.         /**even = head_even;
  98.         *odd = head_odd;
  99.         return cout;*/
  100.     }
  101.  
  102.     // null opttimzuer
  103.     if (curr_odd)
  104.     {
  105.         curr_odd->next = NULL;
  106.     }
  107.     if (curr_even)
  108.     {
  109.         curr_even->next = NULL;
  110.     }
  111.     //by ref even and odd
  112.     *even = head_even;
  113.     *odd = head_odd;
  114.     return cout;
  115. }
  116.  
  117. void print_list(list *head)
  118. {
  119.     list *pos = head;
  120.     while (pos)
  121.     {
  122.         printf(" %d -> ", pos->data);
  123.         pos = pos->next;
  124.  
  125.     }
  126. }
  127.  
  128.     void free_list(list *head)
  129.     {
  130.         list *t_free = head;
  131.         while (t_free!=NULL)
  132.         {
  133.             head = head->next;
  134.             free(t_free);
  135.             t_free = head;
  136.         }
  137.     }
  138.  
  139.  
Add Comment
Please, Sign In to add comment