Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //fifo kolejka na structach
- #include <stdio.h>
- #include <stdlib.h>
- struct pociag
- {
- int liczba;
- struct pociag *nastepca;
- struct pociag *poprzednik;
- } *poczatek = NULL;
- void push(int x)
- {
- if(poczatek!= NULL)
- {
- struct pociag *p = (struct pociag *)malloc(sizeof(struct pociag));
- p->liczba =x;
- p->nastepca=NULL;
- p->poprzednik=NULL;
- if(x <= poczatek->liczba)
- {
- //na poczatek
- poczatek->poprzednik=p;
- p->nastepca=poczatek;
- poczatek=p;
- }
- else
- {
- struct pociag *koniec = poczatek;
- while(koniec->nastepca != NULL)
- {
- koniec=koniec->nastepca;
- }
- if(x>koniec->liczba)
- {
- //wstawiamy na koniec
- p->poprzednik=koniec;
- koniec->nastepca=p;
- }
- else
- {
- //gdzies w srodku
- struct pociag *bogdan = poczatek;
- while(bogdan->nastepca != NULL)
- {
- if(bogdan->liczba >= x)
- {
- break;
- }
- bogdan = bogdan->nastepca;
- //bogdan to element przed ktory wstawiamy
- }
- if(bogdan->poprzednik!=NULL)
- {
- bogdan->poprzednik->nastepca=p;
- }
- p->poprzednik=bogdan->poprzednik;
- p->nastepca=bogdan;
- bogdan->poprzednik=p;
- }
- }
- }
- else
- {
- poczatek = (struct pociag *)malloc(sizeof(struct pociag));
- poczatek->liczba=x;
- poczatek->nastepca = NULL;
- poczatek->poprzednik = NULL;
- }
- printf("dodano element %i\n", x);
- }
- void pisz()
- {
- if(poczatek == NULL)
- {
- printf("lista pusta\n");
- }
- else
- {
- struct pociag *koniec = poczatek;
- printf("%i\n", koniec->liczba);
- while(koniec->nastepca != NULL)
- {
- koniec = koniec->nastepca;
- printf("%i\n", koniec->liczba);
- }
- printf("koniec listy\n\n");
- }
- }
- void pop(int x)
- {
- if(poczatek != NULL)
- {
- struct pociag *p = poczatek;
- while(p->nastepca != NULL)
- {
- if(p->liczba == x)
- break;
- p=p->nastepca;
- }
- if(p->liczba != x)
- {
- printf("lista nie zawiera podanego elementu\n");
- return;
- }
- //no wiec usuwamy p
- if(p->nastepca!=NULL)
- {
- p->nastepca->poprzednik = p->poprzednik;
- }
- if(p->poprzednik!=NULL)
- {
- p->poprzednik->nastepca = p->nastepca;
- }
- free(p);
- printf("element %i zostal usuniety\n", x);
- //return x;
- }
- else
- {
- printf("z pustego to i salomon nie usunie\n");
- }
- }
- int main()
- {
- //pop(5);
- //pisz();
- push(9);
- pisz();
- push(666);
- pisz();
- push(54);
- pisz();
- push(3);
- push(17);
- pisz();
- pop(9);
- pisz();
- push(33);
- push(71);
- push(12);
- pop(999);
- pop(17);
- pisz();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement