Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct lista {
- int value;
- struct lista * next;
- };
- struct lista *dodaj_na_poczatek (struct lista *head,int wartosc);
- struct lista *dodaj_na_koniec (struct lista *head,int wartosc);
- struct lista *dodaj_do_posortowanej (struct lista *head,int wartosc);
- void szukaj_liczby (struct lista *head,int wartosc);
- void usun_liczbe (struct lista *head,int wartosc);
- struct lista *odwroc(struct lista *head);
- void wypisz(struct lista *head);
- int main(void)
- {
- int szukaj,usun;
- struct lista *head=NULL;
- /*
- head=dodaj_na_poczatek(head,1);
- head=dodaj_na_poczatek(head,3);
- head=dodaj_na_poczatek(head,5);
- head=dodaj_na_poczatek(head,7);
- head=dodaj_na_poczatek(head,9);
- */
- head=dodaj_na_koniec(head,2);
- head=dodaj_na_koniec(head,4);
- head=dodaj_na_koniec(head,6);
- head=dodaj_na_koniec(head,10);
- head=dodaj_na_koniec(head,12);
- //wypisz(head);
- /*
- head=dodaj_do_posortowanej(head,23);
- head=dodaj_do_posortowanej(head,13);
- head=dodaj_do_posortowanej(head,67);
- head=dodaj_do_posortowanej(head,3);*/
- head=dodaj_do_posortowanej(head,8);
- wypisz(head);
- //printf("Podaj liczbe ktora chcesz poszukacz: ");
- //scanf("%d", &szukaj);
- //szukaj_liczby(head,szukaj);
- //printf("Podaj liczbe ktora chcesz usunac: ");
- //scanf("%d", &usun);
- head=odwroc(head);
- wypisz(head);
- return 0;
- }
- /////////////////////////////////////////////////////////
- struct lista *dodaj_na_poczatek (struct lista *head,int wartosc)
- {
- struct lista *nowy;
- nowy=malloc(sizeof(struct lista));
- if (nowy==NULL)
- {
- printf("Blad\n");
- return NULL;
- }
- nowy->value=wartosc;
- nowy->next=head;
- return nowy;
- }
- ///////////////////////////////////////////////////
- struct lista *dodaj_na_koniec (struct lista *head,int wartosc)
- {
- struct lista *nowy;
- nowy=(struct lista*)malloc(sizeof(struct lista));
- if (nowy==NULL)
- {
- printf("Blad\n");
- return NULL;
- }
- nowy->value=wartosc;
- nowy->next=NULL;
- if (head==NULL)
- head=nowy;
- else
- {
- struct lista *wsk=head;
- while(wsk->next != NULL)
- {
- wsk=wsk->next;
- }
- wsk->next=nowy;
- }
- return head;
- }
- ///////////////////////////////////////////////////
- struct lista *dodaj_do_posortowanej (struct lista *head,int wartosc)
- {
- struct lista *nowy;
- nowy=(struct lista*)malloc(sizeof(struct lista));
- if (nowy==NULL)
- {
- printf("Blad\n");
- return NULL;
- }
- nowy->value=wartosc;
- nowy->next=NULL;
- if (head==NULL)
- head=nowy;
- else
- {
- struct lista *wsk=head;
- if(wsk->value >= nowy->value)
- {
- nowy->next=head;
- head=nowy;
- }
- else
- while(wsk->next!= NULL)
- {
- if(wsk->value <= nowy->value && wsk->next->value >= nowy->value)
- {
- nowy->next=wsk->next;
- wsk->next=nowy;
- break;
- }
- wsk=wsk->next;
- }
- if(wsk->next==NULL)
- wsk->next=nowy;
- }
- return head;
- }
- ///////////////////////////////////////////////////
- void szukaj_liczby (struct lista *head,int wartosc)
- {
- struct lista *wsk=head;
- int jest=0;
- while (wsk->next!=NULL && wsk->value!=wartosc)
- wsk=wsk->next;
- if(wsk->value==wartosc)
- printf("\n[szukaj] Znalazlo liczbe %d w liscie", wartosc);
- else printf("\n[szukaj] Nie znalazlo liczby %d w liscie", wartosc);
- }
- ///////////////////////////////////////////////////
- void usun_liczbe (struct lista *head,int wartosc)
- {
- struct lista *wsk=head;
- int jest=0;
- while (wsk->next!=NULL)
- {
- if(wsk->next->value==wartosc)
- {
- printf("\n[szukaj] Znalazlo liczbe %d w liscie. \n[usuwanie] Trwa usuwanie\n", wartosc);
- struct lista *usuwany;
- usuwany=wsk->next;
- wsk->next=usuwany->next;
- free(usuwany);
- jest=1;
- }
- else
- wsk=wsk->next;
- }
- if(jest==0) printf("\n[szukaj] Nie znalazlo liczby %d w liscie\n", wartosc);
- }///////////////////////////////////////////////////
- struct lista *odwroc(struct lista *head)
- {
- struct lista *obecny,*poprz,*nast;
- obecny=head;
- poprz=NULL;
- while(obecny!=NULL)
- {
- nast=obecny->next;
- obecny->next=poprz;
- poprz=obecny;
- obecny=nast;
- }
- head=poprz;
- return head;
- }
- ///////////////////////////////////////////////////
- void wypisz(struct lista *head)
- {
- struct lista *wsk=head;
- while (wsk!=NULL){
- printf("%d \n", wsk->value);
- wsk=wsk->next;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement