Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 3

#include <stdio.

h>
#include <stdlib.h>

//mora zbog malloc

typedef struct cvor


//definise tip struct cvor koji se zove Cvor
{
int val;
struct cvor *next;
//next je pokazivac na tip struct cvor. Ovde ne
moze da se koristi samo Cvor
}Cvor;
//pazi na velika/mala slova
Cvor *dodaj(Cvor *poc, int x)
//funkcija dodaj vraca pokazivac na
Cvor (nov pocetak liste), a uzima trenutni pocetak liste i vrednost novog
cvora.
{
Cvor *nov;
nov = (Cvor *)malloc(sizeof(Cvor));
nov->val = x;
nov->next = NULL;
//prethodna 4 reda prave novi cvor koji pamti
vrednost x
if (poc == NULL)
//ako je lista prazna
{
return nov;
//novi cvor postaje pocetak liste (i zavrsava se
funkcija)
}
//ako lista nije prazna ide dalje
Cvor *pom;
pom=poc;
//da bi se sacuvao pocetak liste
while(pom->next !=NULL)
{
pom = pom->next;
//pomocni cvor dolazi do kraja liste
}
pom->next = nov;
//poslednji pokazuje na nov cvor
return poc;
//vraca pocetak liste
}
Cvor *dodajSort(Cvor *poc, int x)
//slicno kao prethodna f-ja, samo sto
ako lista nije prazna, pomocni ne ide do kraja liste, vec do cvora cija je
vrednost veca od x
{
Cvor *nov;
nov = (Cvor *)malloc(sizeof(Cvor));
nov->val = x;
nov->next = NULL;
if (poc == NULL)
{

return nov;
}
if (poc->val > nov->val)
{
nov->next = poc;
return nov;
}
Cvor *pom;
pom=poc;
while((pom->next != NULL) && ((pom->next)->val < x))
{
pom = pom->next;
}
nov->next = pom->next;
pom->next = nov;
return poc;
}
Cvor *ubaci(Cvor *poc, int k, int x)
//ubacuje novi cvor na k-to mesto, tj.
ne ide do kraja liste, nego do k-tog cvora
{
Cvor *nov;
nov = (Cvor *)malloc(sizeof(Cvor));
nov->val = x;
nov->next = NULL;
if ((k == 0) || (poc == NULL))
{
nov->next = poc;
return nov;
}
int i=0;
Cvor *pom;
pom = poc;
while((i!=k-1) && (pom->next!=NULL))
{
pom=pom->next;
i++;
}
nov->next = pom->next;
pom->next = nov;
return poc;
}
void stampaj(Cvor *poc)

//stampa listu I ne vraca nikakvu vrednost,

zato je void
{
Cvor *pom;
pom = poc;
while (pom!=NULL)
{
printf("%d\n", pom->val);
pom=pom->next;
}
}
int main()
{
Cvor *prvi;
int i,x,n,k;
prvi = NULL;
scanf("%d", &n);
for(i = 0; i<n; i++)
{
scanf("%d", &x);
prvi = dodajSort(prvi, x);
}
scanf("%d %d",&k, &x);
prvi = ubaci(prvi, k, x);
stampaj(prvi);
}

You might also like