Problem sa zadatkom

Pitanje ili opis problema

Zdravo,

Imam problema sa zadatkom Petlja. Izbacuje mi RTE, iako mi kod savrseno radi u VS Code-u.

#include <stdio.h>
#include <stdlib.h>

typedef struct Element{
int podatak;
struct Element *sledeci;
} Element;

Element* dodaj_na_kraj(Element* lista, Element* novi)
{
if (lista == NULL)
{
novi->sledeci = lista;
lista = novi;
return lista;
}
Element *temp = lista;
while (temp->sledeci != NULL)
temp = temp->sledeci;
temp->sledeci = novi;
return lista;
}

Element* dodaj_na_pocetak(Element* lista, Element* novi)
{
novi->sledeci = lista;
lista = novi;
return lista;
}

Element* dodaj_na_poziciju(Element* lista, Element* novi, int i)
{
if (!i)
{
novi->sledeci = lista;
lista = novi;
return lista;
}
Element *temp = lista;
while (–i > 0)
temp = temp->sledeci;
novi->sledeci = temp->sledeci;
temp->sledeci = novi;
return lista;
}

void ispisi_listu(Element *lista)
{
while (lista != NULL)
{
printf("%d ", lista->podatak);
lista = lista->sledeci;
}
putchar(’\n’);
}

int main()
{
Element *lista = NULL;
int a = 1, b, x;
while (a > 0)
{
scanf("%d", &a);
if (a == 0) break;
scanf("%d", &b);
Element *novi = (Element *)malloc(sizeof(Element));
novi->podatak = b;
novi->sledeci = NULL;
switch (a){
case 0:
break;
case 1:
lista = dodaj_na_kraj(lista, novi);
break;
case 2:
lista = dodaj_na_pocetak(lista, novi);
break;
case 3:
scanf("%d", &x);
lista = dodaj_na_poziciju(lista, novi, x);
break;
default:
a = 0;
break;
}
}

ispisi_listu(lista);

Element *prev = NULL;
Element *temp = lista;
while (temp != NULL)
{
    prev = temp;
    temp = temp->sledeci;
    free(prev);
}

return 0;

}

2 Likes

Zdravo Tomislave,

Hvala ti na ovom postu. Prosledio sam našem dev timu da vidi o čemu se radi, i prosleđujem ti odgovor čim oni bace oko.

Nadam se da ćeš nam i ubuduće pisati ako naiđeš na neki problem.

Pozdrav.

Zdravo,

U tvom kodu postoje dve stvari koje bi trebalo ispraviti:

  1. Kada se radi o dodavanju elementa na i-to mesto, treba proveriti da li to i-to mesto postoji, a ako ne postoji, dodaje se na kraj.
  2. Pri dodavanju elementa na kraj liste, potrebno je da poslednji element pokazuje na NULL

Nadam se da ti je ovo pomoglo, a ukoliko imaš još nekih pitanja, svakako nam piši da rešimo sve nedoumice.

Pozdrav,
David

1 Like

Zdravo,

Hvala puno na ukazanoj pomoci. Ispravio sam kod i sada radi.

Pozdrav,
Tomislav

1 Like