Advertisement
Patresss

Lista

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