Advertisement
Patresss

Listacc

Aug 27th, 2014
488
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.41 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct lista {
  5. int value;
  6. struct lista * next;
  7. };
  8.  
  9. struct lista *dodaj_na_poczatek (struct lista *head,int wartosc);
  10. struct lista *dodaj_na_koniec (struct lista *head,int wartosc);
  11. struct lista *dodaj_do_posortowanej (struct lista *head,int wartosc);
  12. void szukaj_liczby (struct lista *head,int wartosc);
  13. void usun_liczbe (struct lista *head,int wartosc);
  14. struct lista *odwroc(struct lista *head);
  15. //void odwroc(struct lista *head);
  16. void wypisz(struct lista *head);
  17.  
  18. int main(void)
  19. {
  20.     int szukaj,usun;
  21.         struct lista *head=NULL;
  22.  
  23. /*
  24.         head=dodaj_na_poczatek(head,1);
  25.         head=dodaj_na_poczatek(head,3);
  26.         head=dodaj_na_poczatek(head,5);
  27.         head=dodaj_na_poczatek(head,7);
  28.         head=dodaj_na_poczatek(head,9);
  29. */
  30.  
  31.  
  32.         head=dodaj_na_koniec(head,2);
  33.         head=dodaj_na_koniec(head,4);
  34.         head=dodaj_na_koniec(head,6);
  35.         head=dodaj_na_koniec(head,10);
  36.         head=dodaj_na_koniec(head,12);
  37.     //wypisz(head);
  38. /*
  39.         head=dodaj_do_posortowanej(head,23);
  40.         head=dodaj_do_posortowanej(head,13);
  41.         head=dodaj_do_posortowanej(head,67);
  42.         head=dodaj_do_posortowanej(head,3);*/
  43.         head=dodaj_do_posortowanej(head,8);
  44.  
  45.         wypisz(head);
  46. //printf("Podaj liczbe ktora chcesz poszukacz: ");
  47. //scanf("%d", &szukaj);
  48. //szukaj_liczby(head,szukaj);
  49. //printf("Podaj liczbe ktora chcesz usunac: ");
  50. //scanf("%d", &usun);
  51. //usun_liczbe(head,usun);
  52. odwroc(head);
  53.         wypisz(head);
  54.         return 0;
  55. }
  56. /////////////////////////////////////////////////////////
  57. struct lista *dodaj_na_poczatek (struct lista *head,int wartosc)
  58. {
  59. struct lista *nowy;
  60. nowy=malloc(sizeof(struct lista));
  61.  
  62. if (nowy==NULL)
  63. {
  64.     printf("Blad\n");
  65.     return NULL;
  66. }
  67.     nowy->value=wartosc;
  68.     nowy->next=head;
  69.     return nowy;
  70.  
  71. }
  72. ///////////////////////////////////////////////////
  73. struct lista *dodaj_na_koniec (struct lista *head,int wartosc)
  74. {
  75. struct lista *nowy;
  76.     nowy=(struct lista*)malloc(sizeof(struct lista));
  77.         if (nowy==NULL)
  78. {
  79.     printf("Blad\n");
  80.     return NULL;
  81. }
  82.     nowy->value=wartosc;
  83.     nowy->next=NULL;
  84.  
  85. if (head==NULL)
  86.     head=nowy;
  87. else
  88. {
  89.     struct lista *wsk=head;
  90. while(wsk->next != NULL)
  91.     {
  92.     wsk=wsk->next;
  93.     }
  94.     wsk->next=nowy;
  95. }
  96.     return head;
  97. }
  98. ///////////////////////////////////////////////////
  99. struct lista *dodaj_do_posortowanej (struct lista *head,int wartosc)
  100. {
  101. struct lista *nowy;
  102.     nowy=(struct lista*)malloc(sizeof(struct lista));
  103.         if (nowy==NULL)
  104. {
  105.     printf("Blad\n");
  106.     return NULL;
  107. }
  108.     nowy->value=wartosc;
  109.     nowy->next=NULL;
  110.  
  111. if (head==NULL)
  112.     head=nowy;
  113. else
  114. {
  115.     struct lista *wsk=head;
  116.     if(wsk->value >= nowy->value)
  117.     {
  118.     nowy->next=head;
  119.     head=nowy;
  120.     }
  121.     else
  122. while(wsk->next!= NULL)
  123.     {
  124.     if(wsk->value <= nowy->value && wsk->next->value >= nowy->value)
  125.         {
  126.             nowy->next=wsk->next;
  127.              wsk->next=nowy;
  128.              break;
  129.         }
  130.             wsk=wsk->next;
  131.     }
  132.     if(wsk->next==NULL)
  133.         wsk->next=nowy;
  134. }
  135.     return head;
  136. }
  137. ///////////////////////////////////////////////////
  138. void szukaj_liczby (struct lista *head,int wartosc)
  139. {
  140.     struct lista *wsk=head;
  141.     int jest=0;
  142.     while (wsk->next!=NULL && wsk->value!=wartosc)
  143.         wsk=wsk->next;
  144.         if(wsk->value==wartosc)
  145.     printf("\n[szukaj] Znalazlo liczbe %d w liscie", wartosc);
  146. else printf("\n[szukaj] Nie znalazlo liczby %d w liscie", wartosc);
  147.  
  148. }
  149. ///////////////////////////////////////////////////
  150. void usun_liczbe (struct lista *head,int wartosc)
  151. {
  152.     struct lista *wsk=head;
  153.     int jest=0;
  154.     while (wsk->next!=NULL)
  155.     {
  156.         if(wsk->next->value==wartosc)
  157.         {
  158.     printf("\n[szukaj] Znalazlo liczbe %d w liscie. \n[usuwanie] Trwa usuwanie\n", wartosc);
  159.     struct lista *usuwany;
  160.     usuwany=wsk->next;
  161.     wsk->next=usuwany->next;
  162.     free(usuwany);
  163.     jest=1;
  164.         }
  165.         else
  166.             wsk=wsk->next;
  167.     }
  168. if(jest==0) printf("\n[szukaj] Nie znalazlo liczby %d w liscie\n", wartosc);
  169. }///////////////////////////////////////////////////
  170. struct lista *odwroc(struct lista *head)
  171. {
  172.     struct lista *obecny,*poprz,*next;
  173. obecny=head;
  174. poprz=NULL;
  175.  
  176.         while(obecny!=NULL)
  177.         {
  178.             next=obecny->next;
  179.             obecny->next=poprz;
  180.             poprz=obecny;
  181.             obecny=next;
  182.         }
  183.         head=poprz;
  184.         return head;
  185.     }
  186.  
  187. ///////////////////////////////////////////////////
  188. void wypisz(struct lista *head)
  189. {
  190.     struct lista *wsk=head;
  191.     while (wsk!=NULL){
  192.         printf("%d \n", wsk->value);
  193.         wsk=wsk->next;
  194.     }
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement