Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. #define DEBUG if(0)
  6.  
  7. typedef struct Node Node;
  8.  
  9. struct Node
  10. {
  11.   int item;
  12.   Node *next;
  13. };
  14.  
  15. Node* create_linked_list()
  16. {
  17.   return NULL;
  18. }
  19.  
  20. Node* add(Node *head, int item)
  21. {
  22.   Node *new_node = (Node *) malloc(sizeof(Node));
  23.   new_node -> item = item;
  24.   new_node -> next = head;
  25.   return new_node;
  26. }
  27.  
  28. void sort(Node *head, int size)
  29. {
  30.   while(size--)
  31.   {
  32.     Node *current = head;
  33.     bool is_head = true;
  34.     Node *previous = NULL;
  35.     while(current -> next != NULL)
  36.     {
  37.       if(is_head)
  38.       {
  39.         if(current -> item >= current -> next -> item)
  40.         {
  41.           Node *temp = current -> next -> next;
  42.           current -> next -> next = current;
  43.           current -> next = temp;
  44.         }
  45.         previous = current;
  46.         current = current -> next;
  47.         is_head = false;
  48.       }
  49.       else
  50.       {
  51.         if(current -> item >= current -> next -> item)
  52.         {
  53.           Node *temp = previous -> next;
  54.           Node *temp2 = current -> next -> next;
  55.           previous -> next = current -> next;
  56.           current -> next -> next = temp;
  57.           temp -> next = temp2;
  58.         }
  59.         previous = current;
  60.         current = current -> next;
  61.       }
  62.     }
  63.   }
  64. }
  65.  
  66. /*void swap(Node *head, Node *nodeA, Node *nodeB)
  67. {
  68.  
  69. }*/
  70.  
  71. void printar(Node *head)
  72. {
  73.   while(head != NULL)
  74.   {
  75.     printf("%d%c", head -> item, (head -> next == NULL) ? '\n' : ' ');
  76.     head = head -> next;
  77.   }
  78. }
  79.  
  80. int main()
  81. {
  82.   int n, size = 0;
  83.   Node *list = create_linked_list();
  84.   while(scanf("%d", &n) != EOF)
  85.   {
  86.     size++;
  87.     list = add(list, n);
  88.   }
  89.   sort(list, size);
  90.   printar(list);
  91.   return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement