Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct element ELEMENT;
- struct element
- {
- int podatak;
- ELEMENT *sledeci;
- ELEMENT *prethodni;
- };
- void alociraj(ELEMENT **novi)
- {
- (*novi) = (ELEMENT *)malloc(sizeof(ELEMENT));
- if (!(*novi))
- {
- printf("GRESKA_NOVI\n\n");
- exit(1);
- }
- (*novi)->sledeci = NULL;
- (*novi)->prethodni = NULL;
- }
- ELEMENT *napravi_element(void)
- {
- ELEMENT *novi;
- alociraj(&novi);
- printf("Unesite vrednost: ");
- scanf("%d",&novi->podatak);
- return novi;
- }
- void dodaj(ELEMENT **poc, ELEMENT **kraj, ELEMENT *novi)
- {
- if(!(*poc))
- {
- *poc = novi;
- *kraj = novi;
- }
- else
- {
- novi->prethodni = *kraj;
- (*kraj)->sledeci = novi;
- (*kraj) = novi;
- }
- }
- void dodaj_pocetak(ELEMENT **poc, ELEMENT **kraj, ELEMENT *novi)
- {
- if (!(*poc))
- {
- *poc = novi;
- *kraj = novi;
- }
- else
- {
- novi->sledeci = *poc;
- (*poc)->prethodni = novi;
- *poc = novi;
- }
- }
- void umetni(ELEMENT **pocetak, ELEMENT **kraj, ELEMENT *novi, int n)
- {
- int indeks, br = 1;
- printf("Unesite indeks posle kog zelite da se nadje umetnuti element: ");
- scanf("%d",&indeks);
- if(indeks < 1) dodaj_pocetak(pocetak, kraj, novi);
- else if (indeks >= n) dodaj(pocetak, kraj, novi);
- else
- {
- ELEMENT *pom = *pocetak;
- while(br < indeks)
- {
- br++;
- pom = pom->sledeci;
- }
- novi->prethodni = pom;
- novi->sledeci = pom->sledeci;
- pom->sledeci->prethodni = novi;
- pom->sledeci = novi;
- }
- }
- void kreiraj_listu(ELEMENT **poc, ELEMENT **kraj, int *n)
- {
- ELEMENT *novi;
- printf("Unesite n: ");
- scanf("%d", &(*n));
- int br = *n;
- while(br)
- {
- novi = napravi_element();
- dodaj(poc, kraj, novi);
- br--;
- }
- }
- void stampaj_desno(ELEMENT *poc)
- {
- printf("\n\nELEMENTI LISTE SU:\n\n");
- while(poc != NULL)
- {
- printf("%d\t",poc->podatak);
- poc = poc->sledeci;
- }
- putchar('\n');
- }
- void stampaj_levo(ELEMENT *kraj)
- {
- printf("\n\nELEMENTI LISTE SU:\n\n");
- while(kraj != NULL)
- {
- printf("%d\t",kraj->podatak);
- kraj = kraj->prethodni;
- }
- putchar('\n');
- }
- void obrisi(ELEMENT **poc, ELEMENT **kraj, int n)
- {
- int indeks;
- printf("Unesite indeks elementa za brisanje: ");
- scanf("%d",&indeks);
- ELEMENT *pom = *poc;
- if (indeks == 1)
- {
- *poc = (*poc)->sledeci;
- (*poc)->prethodni = NULL;
- free(pom);
- }
- else if (indeks == n)
- {
- pom = *kraj;
- *kraj = (*kraj)->prethodni;
- (*kraj)->sledeci = NULL;
- free(pom);
- }
- else
- {
- indeks--;
- while(indeks)
- {
- pom = pom->sledeci;
- indeks--;
- }
- pom->prethodni->sledeci = pom->sledeci;
- pom->sledeci->prethodni = pom->prethodni;
- free(pom);
- }
- }
- int main(void)
- {
- ELEMENT *pocetak, *kraj;//, *pom;
- int n;
- kreiraj_listu(&pocetak, &kraj, &n);
- stampaj_desno(pocetak);
- stampaj_levo(kraj);
- /* printf("\nDODAVANJE NA POCETAK\n");
- alociraj(&pom);
- pom = napravi_element();
- dodaj_pocetak(&pocetak, &kraj, pom);
- stampaj_desno(pocetak);
- printf("\nUMETNI\n");
- alociraj(&pom);
- pom = napravi_element();
- umetni(&pocetak, &kraj, pom, n);
- stampaj_desno(pocetak);
- */
- printf("\nBRISANJE\n");
- obrisi(&pocetak, &kraj, n);
- stampaj_desno(pocetak);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement