Advertisement
Sawy3R11

labki 4 listy

Apr 26th, 2016
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.34 KB | None | 0 0
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. struct element
  5. {
  6.     int k;
  7.     struct element *prev;
  8.     struct element *next;
  9. };
  10.  
  11. struct element *lista_dodaj(struct element *head, struct element *nowy);
  12. void lista_wyswietl (struct element *head);
  13. struct element *szukaj(struct element *head, int szukana);
  14. struct elemetn *usun( struct element *head, struct element *wyszukana);
  15.  
  16. int main()
  17. {
  18.     struct element *head = NULL, *nowy = NULL;  
  19.     char z;
  20.     int liczba, szukana;
  21.  
  22.     while (1)
  23.     {
  24.         fflush(stdin);
  25.         z = getchar();
  26.         switch(z)
  27.         {
  28.             case 'd':
  29.                 nowy = (struct element*) malloc (sizeof (struct element));
  30.                 printf("Podaj wartosc: ");
  31.                 scanf("%d", &liczba);
  32.                 nowy -> k = liczba;
  33.                 head = lista_dodaj (head, nowy);
  34.                 break;
  35.             case 'w':
  36.                 lista_wyswietl( head);
  37.                 break;  
  38.             case 's':  
  39.                 printf("\nPodaj szukana: ");
  40.                 scanf("%i", &szukana);  
  41.                 nowy = szukaj (head, szukana);
  42.                 if(nowy != NULL) printf("\nZnaleziono element");
  43.                 else printf("\nNie znaleziono!");
  44.                 break;
  45.             case 'u':
  46.                 printf("\nPodaj usuwana: ");
  47.                 scanf("%i", &szukana);  
  48.                 nowy = szukaj (head, szukana);
  49.                 if(nowy != NULL)
  50.                 {
  51.                     printf("\nZnaleziono element");  
  52.                     head = usun(head, nowy);
  53.                    
  54.                 }
  55.                 else printf("\nNie znaleziono!");
  56.                 break;
  57.             case 'q' :
  58.                 return 0;
  59.         }
  60.     }
  61.  
  62.     return 0;
  63. }
  64.  
  65. struct element *lista_dodaj(struct element *head, struct element *nowy)
  66. {
  67.     nowy -> prev = NULL;  
  68.     nowy -> next = head;
  69.     if(head != NULL)
  70.         head -> prev = nowy;
  71.     head = nowy;
  72.     return head;
  73. }
  74.  
  75. void lista_wyswietl (struct element *head)
  76. {
  77.     struct element *x = head;
  78.     while ( x!= NULL )
  79.     {
  80.         printf("%d ", x->k);
  81.         x = x -> next;
  82.     }
  83. }
  84.  
  85. struct element *szukaj(struct element *head, int szukana)
  86. {
  87.     struct element *x= head;
  88.    
  89.     while ( x!=NULL )
  90.     {
  91.         if(x->k == szukana) return x;
  92.         x = x -> next;
  93.     }
  94.  
  95.     return NULL;
  96. }
  97.  
  98. struct elemetn *usun( struct element *head, struct element *wyszukana)
  99. {
  100.     if( wyszukana->prev == NULL)
  101.     {
  102.         head = head ->next;  
  103.         head ->prev = NULL;
  104.         free(wyszukana);
  105.     }
  106.     if( wyszukana ->next == NULL)
  107.     {
  108.         (wyszukana -> prev) -> next = NULL;
  109.         free(wyszukana);
  110.     }
  111.     else
  112.     {
  113.         (wyszukana->prev) -> next = wyszukana->next;
  114.         (wyszukana -> next) -> prev = wyszukana ->prev;
  115.         free(wyszukana);
  116.     }
  117.  
  118.     return head;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement