Advertisement
desdemona

lista jakastam.

Feb 27th, 2013
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. //fifo kolejka na structach
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. struct pociag
  7. {
  8.     int liczba;
  9.     struct pociag *nastepca;
  10.     struct pociag *poprzednik;
  11. } *poczatek = NULL;
  12.  
  13. void push(int x)
  14. {
  15.     if(poczatek!= NULL)
  16.     {
  17.         struct pociag *p = (struct pociag *)malloc(sizeof(struct pociag));
  18.         p->liczba =x;
  19.         p->nastepca=NULL;
  20.         p->poprzednik=NULL;
  21.         if(x <= poczatek->liczba)
  22.         {
  23.             //na poczatek
  24.             poczatek->poprzednik=p;
  25.             p->nastepca=poczatek;
  26.             poczatek=p;
  27.         }
  28.         else
  29.         {
  30.  
  31.  
  32.             struct pociag *koniec = poczatek;
  33.             while(koniec->nastepca != NULL)
  34.             {
  35.                 koniec=koniec->nastepca;
  36.             }
  37.  
  38.             if(x>koniec->liczba)
  39.             {
  40.                 //wstawiamy na koniec
  41.                 p->poprzednik=koniec;
  42.                 koniec->nastepca=p;
  43.             }
  44.             else
  45.             {
  46.                 //gdzies w srodku
  47.                 struct pociag *bogdan = poczatek;
  48.                 while(bogdan->nastepca != NULL)
  49.                 {
  50.                     if(bogdan->liczba >= x)
  51.                     {
  52.                         break;
  53.                     }
  54.                     bogdan = bogdan->nastepca;
  55.                     //bogdan to element przed ktory wstawiamy
  56.                 }
  57.  
  58.                 if(bogdan->poprzednik!=NULL)
  59.                 {
  60.                     bogdan->poprzednik->nastepca=p;
  61.                 }
  62.                 p->poprzednik=bogdan->poprzednik;
  63.                 p->nastepca=bogdan;
  64.                 bogdan->poprzednik=p;
  65.             }
  66.         }
  67.     }
  68.     else
  69.     {
  70.         poczatek = (struct pociag *)malloc(sizeof(struct pociag));
  71.         poczatek->liczba=x;
  72.         poczatek->nastepca = NULL;
  73.         poczatek->poprzednik = NULL;
  74.     }
  75.     printf("dodano element %i\n", x);
  76. }
  77.  
  78. void pisz()
  79. {
  80.     if(poczatek == NULL)
  81.     {
  82.         printf("lista pusta\n");
  83.     }
  84.     else
  85.     {
  86.         struct pociag *koniec = poczatek;
  87.         printf("%i\n", koniec->liczba);
  88.         while(koniec->nastepca != NULL)
  89.         {
  90.             koniec = koniec->nastepca;
  91.             printf("%i\n", koniec->liczba);
  92.         }
  93.         printf("koniec listy\n\n");
  94.     }
  95. }
  96. void pop(int x)
  97. {
  98.     if(poczatek != NULL)
  99.     {
  100.         struct pociag *p = poczatek;
  101.         while(p->nastepca != NULL)
  102.         {
  103.             if(p->liczba == x)
  104.                 break;
  105.  
  106.             p=p->nastepca;
  107.         }
  108.  
  109.         if(p->liczba != x)
  110.         {
  111.             printf("lista nie zawiera podanego elementu\n");
  112.             return;
  113.         }
  114.        
  115.         //no wiec usuwamy p
  116.         if(p->nastepca!=NULL)
  117.         {
  118.         p->nastepca->poprzednik = p->poprzednik;
  119.         }
  120.  
  121.         if(p->poprzednik!=NULL)
  122.         {
  123.         p->poprzednik->nastepca = p->nastepca;
  124.         }
  125.  
  126.         free(p);
  127.         printf("element %i zostal usuniety\n", x);
  128.         //return x;
  129.     }
  130.     else
  131.     {
  132.         printf("z pustego to i salomon nie usunie\n");
  133.     }
  134. }
  135.  
  136.  
  137.  
  138. int main()
  139. {
  140.     //pop(5);
  141.     //pisz();
  142.     push(9);
  143.     pisz();
  144.     push(666);
  145.     pisz();
  146.     push(54);
  147.     pisz();
  148.     push(3);
  149.     push(17);
  150.     pisz();
  151.     pop(9);
  152.     pisz();
  153.     push(33);
  154.     push(71);
  155.     push(12);
  156.     pop(999);
  157.     pop(17);
  158.     pisz();
  159.  
  160.     return 0;
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement