Lista rekurencyjne wstawianie i wyświetlanie

0
 
typedef struct lista {
  int wart;
  lista *nast;
} lista;

void dodaj(lista *l, int nowy){
  if(l != null){
    dodaj(l->nast, nowy);
  } else {
    l = (lista*)malloc(sizeof(lista));
    l->wart = nowy;
    l->nast = null;
  }
}

void pokaz(lista *l){
  if(l != null){
    printf("%i ", l->wart);
    pokaz(l->nast);
  }
}

Koleś chyba to z pamięci pisał i nie sprawdził czy działa
Nie pokazuje się już na forum a nie widzę co jest źle

Wg mnie rekurencja nie jest potrzebna bo stosunkowo łatwo ją iteracją zastąpić
Nie widzę też drugiego wskaźnika którego w C++ może zastąpić referencja

0

Jak ja lubię takie pytania
Gdybym wiedział to bym poprawił
Koleś miał pomysł aby te funkcje napisać rekurencyjnie
i nie wiem co jest w nich nie tak
W iteracyjnym podejściu w przypadku gdy lista jest niepusta będzie
pętelka aby przejść ka koniec listy i tam wstawić element
Mamy też podwójny wskaźnik który w C++ można zastąpić referencją
natomiast nie wiem co jest nie tak w tym podejściu rekurencyjnym
Efekt działania tych rekurencyjnych procedur jest podobny jakbyśmy w podejściu iteracyjnym dali tylko jeden wskaźnik
(nie zmodyfikuje listy)

0

Gdy przepisałem to na Pascala to podejście rekurencyjne działa
Do pary przydałby się rekurencyjny pop który zdejmowałby element z końca listy
Przyjrzałem się innej funkcji rekurencyjnej i chyba wiem co należy poprawić aby działało

1 użytkowników online, w tym zalogowanych: 0, gości: 1