Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "6.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- CalkDodat *newNode(unsigned int liczba)
- {
- CalkDodat *node=(CalkDodat*) malloc(sizeof(CalkDodat));
- node->next=NULL;
- node->prev=NULL;
- node->liczba=liczba;
- return node;
- }
- CalkDodat *znajdzOgon(CalkDodat *lista)
- {
- while(lista->next)
- lista=lista->next;
- return lista;
- }
- bool dodajnakoncu (CalkDodat *lista, unsigned int liczba)
- {
- CalkDodat *wsk, *nowy;
- wsk = lista;
- bool p=0;
- if (!wsk)
- {
- nowy =(CalkDodat*)malloc (sizeof(CalkDodat));
- nowy->prev = NULL;
- nowy->next = NULL;
- nowy->liczba=liczba;
- p=1;
- return p;
- }
- else
- {
- znajdzOgon(wsk);
- nowy =(CalkDodat*) malloc (sizeof(CalkDodat));
- nowy->liczba = liczba;
- nowy->next = NULL;
- nowy->prev=wsk;
- wsk->next = nowy;
- return p;
- }
- }
- CalkDodat *znajdzGlowe(CalkDodat *lista)
- {
- while (lista->prev)
- lista = lista->prev;
- return lista;
- }
- bool znajdzPoArgumencie(unsigned int i, CalkDodat *head)
- {
- unsigned a=i;
- bool p=0;
- CalkDodat *wsk=znajdzGlowe(head);
- while(wsk->next)
- {
- if(wsk->liczba==a)
- {
- p = 1;
- }
- wsk=wsk->next;
- }
- return p;
- }
- bool dodajZa (unsigned int liczba, CalkDodat *head, unsigned int i)
- {
- CalkDodat *wsk, *nowy;
- wsk =znajdzGlowe(head);
- unsigned int a=i;
- bool p=0;
- while(wsk)
- {
- if(wsk->liczba==a)
- {
- CalkDodat *nowy=newNode(a);
- CalkDodat *zlapNas=wsk->prev;
- if(zlapNas)
- {
- nowy->prev=wsk;
- nowy->next=zlapNas;
- wsk->next=nowy;
- zlapNas->prev=nowy;
- }
- p=1;
- }
- wsk=wsk->next;
- }
- return p;
- }
- bool dodajPrzed (unsigned int liczba, CalkDodat* head, unsigned int i)
- {
- CalkDodat *wsk, *nowy;
- wsk =znajdzGlowe(head);
- unsigned int a=i;
- bool p=0;
- while(wsk)
- {
- if(wsk->liczba==a)
- {
- CalkDodat *zlapPop=wsk->prev;
- nowy=newNode(a);
- if(zlapPop)
- {
- wsk->prev=nowy;
- nowy->next=wsk;
- nowy->prev=zlapPop;
- zlapPop->next=nowy;
- }
- else
- {
- wsk->prev=nowy;
- nowy->next=wsk;
- nowy->prev=NULL;
- }
- p= 1;
- }
- }
- return p;
- }
- bool usunn(unsigned int i, CalkDodat *head)
- {
- unsigned a=i;
- CalkDodat *wsk=znajdzGlowe(head);
- bool p=0;
- while (wsk->next)
- {
- if (wsk->next->liczba == a)
- {
- CalkDodat *usuwany=wsk->next;
- wsk->next = usuwany->next;
- wsk=wsk->next;
- wsk->prev=wsk->prev->prev;
- free(usuwany);
- p=1;
- }
- else
- {
- wsk = wsk->next;
- }
- }
- return p;
- }
- void wyswietlListe(CalkDodat *lista)
- {
- CalkDodat *wsk=znajdzGlowe(lista);
- while(wsk)
- {
- printf ("%u\n", wsk->liczba);
- wsk = wsk->next;
- }
- }
- void wyczyscListe(CalkDodat *lista)
- {
- CalkDodat *head=znajdzGlowe(lista);
- lista = head->next;
- while(lista)
- {
- free(head);
- head=lista;
- lista=lista->next;
- }
- }
- CalkDodat *znajdz(unsigned int i, CalkDodat *list)
- {
- unsigned a=i;
- CalkDodat *wsk=list;
- while(wsk)
- {
- if(wsk->liczba==a)
- {
- return wsk;
- }
- wsk=wsk->next;
- }
- return NULL;
- }
- CalkDodat *zamienMiejscami(CalkDodat *lista, unsigned int parametr1, unsigned int parametr2)
- {
- unsigned q=parametr1;
- unsigned r=parametr2;
- CalkDodat *list=lista;
- znajdzGlowe(list);
- CalkDodat* obec1 = znajdz(q, list);
- CalkDodat* obec2 = znajdz(r, list);
- while(obec1!=NULL && obec2!=NULL)
- {
- CalkDodat *par1p=obec1->prev;
- CalkDodat *par1n=obec1->next;
- CalkDodat *par2p=obec2->prev;
- CalkDodat *par2n=obec2->next;
- if(par1p)
- obec2->prev=par1p;
- else
- obec2->prev=NULL;
- if(par1n)
- obec2->next=par1n;
- else
- obec2->next=NULL;
- if(par2p)
- obec1->prev=par2p;
- else
- obec1->prev=NULL;
- if(par2n)
- obec1->next=par2n;
- else
- obec1->next=NULL;
- CalkDodat* obec1 = znajdz(q, list);
- CalkDodat* obec2 = znajdz(r, list);
- }
- return list;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement