akadjoker

linklist

Mar 28th, 2022 (edited)
1,039
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. /*
  4. https://www.learn-c.org/en/Linked_lists
  5. https://www.tutorialspoint.com/data_structures_algorithms/linked_list_program_in_c.htm
  6. https://www.log2base2.com/data-structures/linked-list/linked-list-in-c.html
  7.  
  8. */
  9.  
  10. typedef struct node
  11. {
  12.   int value;
  13.   struct node *next;
  14. }node;
  15.  
  16. node *head = NULL;
  17.    
  18.  
  19. void printlist( node *p)
  20. {
  21.   while (p != NULL)
  22.   {
  23.     printf("%d \n", p->value);
  24.     p = p->next;
  25.   }
  26. }
  27.  
  28.  
  29. void add(int i)
  30. {
  31.     if (!head)
  32.     {
  33.         head = malloc(sizeof( node));
  34.         head->value = i;
  35.         head->next = NULL;
  36.     } else
  37.     {
  38.         node *n = malloc(sizeof( node));
  39.         n->value = i;
  40.         n->next = head;
  41.         head = n;
  42.     }
  43. }
  44.  
  45. void push(int i)
  46. {
  47.     if (!head)
  48.     {
  49.         head = malloc(sizeof( node));
  50.         head->value = i;
  51.         head->next = NULL;
  52.     } else
  53.     {
  54.  
  55.     node * current = head;
  56.     while (current->next != NULL)
  57.     {
  58.         current = current->next;
  59.     }
  60.     current->next = (node *) malloc(sizeof(node));
  61.     current->next->value = i;
  62.     current->next->next = NULL;
  63.     }
  64. }
  65.  
  66.  
  67. int pop()
  68. {
  69.     int retval = -1;
  70.     node * next_node = NULL;
  71.  
  72.     if (head == NULL)
  73.     {
  74.         return -1;
  75.     }
  76.  
  77.     next_node = head->next;
  78.     retval = head->value;
  79.     free(head);
  80.     head = NULL;
  81.     head = next_node;
  82.  
  83.     return retval;
  84. }
  85.  
  86. int rem()
  87. {
  88.     int retval = 0;
  89.  
  90.    if (head == NULL)
  91.     {
  92.         return -1;
  93.     }
  94.    
  95.     if (head->next == NULL)
  96.     {
  97.         retval = head->value;
  98.         free(head);
  99.         head = NULL;
  100.         return retval;
  101.     }
  102.  
  103.  
  104.     node * current = head;
  105.     while (current->next->next != NULL)
  106.     {
  107.         current = current->next;
  108.     }
  109.  
  110.  
  111.     retval = current->next->value;
  112.     free(current->next);
  113.     current->next = NULL;
  114.     return retval;
  115.  
  116. }
  117.  
  118.  
  119. void deleteNone(int key)
  120. {
  121.  
  122.  
  123.     node* current = head;
  124.     node* previous = NULL;
  125.    
  126.  
  127.    if(head == NULL)
  128.    {
  129.       return ;
  130.    }
  131.  
  132.  
  133.    while(current->value != key)
  134.    {
  135.       if(current->next == NULL)
  136.       {
  137.          return ;
  138.       } else
  139.       {
  140.      
  141.          previous = current;
  142.          current = current->next;
  143.       }
  144.    }
  145.  
  146.  
  147.    if(current == head)
  148.       head = head->next;
  149.     else
  150.       previous->next = current->next;
  151.    
  152.    
  153.    free (current);
  154.    current = NULL;
  155. }
  156.  
  157. void deleteList()
  158. {
  159.  
  160.     node* current = head;
  161.     node* next;
  162.  
  163.    while (current != NULL)
  164.    {
  165.        next = current->next;
  166.        free(current);
  167.        current = next;
  168.    }
  169.    head = NULL;
  170. }
  171.    
  172. int main()
  173. {
  174.    add(0);
  175.    add(1);
  176.    add(2);
  177.    add(3);
  178.    push(100);
  179.    push(200);
  180.    
  181.    deleteNone(100);
  182.    
  183.    rem();
  184.  
  185.  
  186.   printlist(head);
  187.   deleteList();
  188.   printlist(head);
  189.  
  190.  
  191. }
Add Comment
Please, Sign In to add comment