Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. typedef struct lista{
  6.     int wartosc;
  7.     struct lista *pref;
  8.     struct lista *next;
  9.  
  10. } lista;
  11.  
  12. lista * head;
  13.  
  14. void addElement (lista * pierwszyelement, int wartoscc){
  15.     lista *current, *newElement;
  16.     current = pierwszyelement;
  17.         while(current-> next != NULL){
  18.             current=current-> next;
  19.         };
  20.     newElement = malloc(sizeof(struct lista));
  21.     newElement-> wartosc = wartoscc;
  22.     newElement-> pref = current;
  23.     newElement->next = current-> next;
  24.     current-> next = newElement;
  25.  
  26. }
  27.  
  28. void view (lista * pierwszyelement){
  29.     lista *current;
  30.     current = pierwszyelement;
  31.          while(current -> pref!= NULL){
  32.  
  33.             current=current -> pref;
  34.  
  35.         };
  36.  
  37.         while(current != NULL){
  38.             printf("\n wartosc %d",  current -> wartosc);
  39.             printf("\n next %d",  current -> next);
  40.             printf("\n pref %d \n \n",  current -> pref);
  41.             current=current -> next;
  42.         };
  43.  
  44. }
  45.  
  46. void sortChangeWartosc (lista * head){
  47.     lista *current, *prev;
  48.     current = head;
  49.  while (current != NULL){
  50.      printf("\n current current: %d \n \n", current->wartosc);
  51.      prev = current ;
  52.      int saveNextCurrent = current -> next;
  53.             while (prev != NULL){
  54.             printf("sprawdzenie pref prev -> pref = %d \n", prev-> wartosc);
  55.                     //  prev = current ->pref ;
  56.                 if (current->wartosc < prev -> wartosc){
  57.                         printf("zamiana cur %d < pref %d \n", current->wartosc,prev -> wartosc);
  58.                         int warCurrent = current->wartosc;
  59.                         int warbefore = prev -> wartosc;
  60.                         prev -> wartosc = warCurrent;
  61.                         current -> wartosc = warbefore;
  62.                         current = prev;
  63.                 }
  64.                     //current ->pref = prev ->pref;
  65.                     // prev ->next = current ->next;
  66.                     // prev ->pref = current ;
  67.                     // current ->next = prev;
  68.  
  69.                 prev = prev -> pref;
  70.              };
  71.  
  72.             //tablica[j+1] = saveArray;
  73.             current = saveNextCurrent;
  74. };
  75. }
  76.  
  77. void sortChangeElement (lista * head){
  78.     lista *current, *prev, *beforePrev, *currentNext;
  79.     current = head;
  80.  
  81.  while (current != NULL){
  82.      printf("\n current %d \n \n", current->wartosc);
  83.      prev = current->pref;
  84.      int saveNextCurrent = current -> next;
  85.             while (prev != NULL){
  86.             printf(" prev -> pref = %d \n", prev-> wartosc);
  87.                     //  prev = current ->pref ;
  88.                 if (current->wartosc < prev -> wartosc){
  89.                         printf("zamiana current %d na prev %d \n", current->wartosc,prev -> wartosc);
  90.  
  91.                         if (prev -> pref != NULL){
  92.                              beforePrev = prev -> pref;
  93.                              beforePrev -> next = current;
  94.                         };
  95.                         if (current -> next != NULL){
  96.                              currentNext = current -> next;
  97.                             currentNext -> pref = prev;
  98.                         };
  99.  
  100.                         current -> pref = prev -> pref;
  101.                         prev -> next = current -> next;
  102.                         prev -> pref = current;
  103.                         current -> next = prev;
  104.                 }
  105.  
  106.                 prev = prev -> pref;
  107.              };
  108.  
  109.             //tablica[j+1] = saveArray;
  110.             current = saveNextCurrent;
  111.  
  112.  
  113. };
  114. }
  115.  
  116.  
  117. int main()
  118. {
  119.     head = malloc(sizeof(struct lista));
  120.     head -> wartosc = 7 ;
  121.     head -> pref = NULL;
  122.     head -> next = NULL;
  123.  
  124.     addElement (head, 5);
  125.     addElement (head, 4);
  126.     addElement (head, 6);
  127.     addElement (head, 22);
  128.     addElement (head, 55);
  129.     addElement (head, 1);
  130.     addElement (head, 3);
  131.     addElement (head, 2);
  132.     addElement (head, 62);
  133.     addElement (head, 9);
  134.     view(head);
  135.  
  136.     //sortChangeWartosc(head);
  137.     sortChangeElement(head);
  138.  
  139.     view(head);
  140.  
  141.     return 0;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement