Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdlib.h>
- #include<stdio.h>
- struct element
- {
- int k;
- struct element *prev;
- struct element *next;
- };
- struct element *lista_dodaj(struct element *head, struct element *nowy);
- void lista_wyswietl (struct element *head);
- struct element *szukaj(struct element *head, int szukana);
- struct elemetn *usun( struct element *head, struct element *wyszukana);
- int main()
- {
- struct element *head = NULL, *nowy = NULL;
- char z;
- int liczba, szukana;
- while (1)
- {
- fflush(stdin);
- z = getchar();
- switch(z)
- {
- case 'd':
- nowy = (struct element*) malloc (sizeof (struct element));
- printf("Podaj wartosc: ");
- scanf("%d", &liczba);
- nowy -> k = liczba;
- head = lista_dodaj (head, nowy);
- break;
- case 'w':
- lista_wyswietl( head);
- break;
- case 's':
- printf("\nPodaj szukana: ");
- scanf("%i", &szukana);
- nowy = szukaj (head, szukana);
- if(nowy != NULL) printf("\nZnaleziono element");
- else printf("\nNie znaleziono!");
- break;
- case 'u':
- printf("\nPodaj usuwana: ");
- scanf("%i", &szukana);
- nowy = szukaj (head, szukana);
- if(nowy != NULL)
- {
- printf("\nZnaleziono element");
- head = usun(head, nowy);
- }
- else printf("\nNie znaleziono!");
- break;
- case 'q' :
- return 0;
- }
- }
- return 0;
- }
- struct element *lista_dodaj(struct element *head, struct element *nowy)
- {
- nowy -> prev = NULL;
- nowy -> next = head;
- if(head != NULL)
- head -> prev = nowy;
- head = nowy;
- return head;
- }
- void lista_wyswietl (struct element *head)
- {
- struct element *x = head;
- while ( x!= NULL )
- {
- printf("%d ", x->k);
- x = x -> next;
- }
- }
- struct element *szukaj(struct element *head, int szukana)
- {
- struct element *x= head;
- while ( x!=NULL )
- {
- if(x->k == szukana) return x;
- x = x -> next;
- }
- return NULL;
- }
- struct elemetn *usun( struct element *head, struct element *wyszukana)
- {
- if( wyszukana->prev == NULL)
- {
- head = head ->next;
- head ->prev = NULL;
- free(wyszukana);
- }
- if( wyszukana ->next == NULL)
- {
- (wyszukana -> prev) -> next = NULL;
- free(wyszukana);
- }
- else
- {
- (wyszukana->prev) -> next = wyszukana->next;
- (wyszukana -> next) -> prev = wyszukana ->prev;
- free(wyszukana);
- }
- return head;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement