Lista rekurencyjne wstawianie i wyświetlanie

Lista rekurencyjne wstawianie i wyświetlanie
N1
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
 
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

N1
  • Rejestracja: dni
  • Ostatnio: dni
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)

N1
  • Rejestracja: dni
  • Ostatnio: dni
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.