Funkcja dodajaca elementy do struktury

Awatar użytkownika
eaglefly
Użytkownik
Użytkownik
Posty: 52
Rejestracja: 25 mar 2008, o 22:07
Płeć: Mężczyzna
Lokalizacja: Wołomin
Podziękował: 16 razy

Funkcja dodajaca elementy do struktury

Post autor: eaglefly »

Nie za bardzo rozumiem o co chodzi w funkcji dodającej kolejne elementy do struktury. Nie jest długa i byłbym wdzięczny jeżeli ktoś opisałby krok po kroku co sie w niej dzieje.

Kod: Zaznacz cały

typedef struct e{
        int data;
        struct e *nast;
        }*list_t;
        list_t
dodaj (list_t lista, int nowy)
{
  list_t ne = malloc (sizeof *ne);
  ne->data = nowy;
  ne->nast = NULL;
  if (lista == NULL)
    return ne;
  else {
    list_t it = lista;
    while (it->nast != NULL)
      it = it->nast;
    it->nast = ne;
    return lista;
  }
}
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Funkcja dodajaca elementy do struktury

Post autor: soku11 »

Kod: Zaznacz cały

typedef struct e{
        int data;
        struct e *nast;
        }*list_t;
        list_t

list_t dodaj (list_t lista, int nowy)  // poprawilem bo musi cos zwracac, w tym przypadku wskaznik na dana strukture
{
  list_t ne = malloc (sizeof *ne);  // allokacja pamieci dla rozmiaru struktury
  ne->data = nowy;                    // ustawienie wartosci data w nowo zaalokowanej pamieci (zgodnie z arg funkcji)
  ne->nast = NULL;                   // wstawiane na koniec, wiec nastepnik po nowym elemencie jest pusty (NULL)
  if (lista == NULL)                    // jesli nie ma wogole listy (arg pierwszy w funkcji to zapewne wskaznik na pierwszy  element listy)
    return ne;                            // nic wiecej nie kombinuj, tylko zwroc nowy pierwszy element listy
  else {                                    // tutaj nie potrzeba tego else, ale to szczegol
    list_t it = lista;                     // tymczasowa zmienna ustawiona na poczatek listy (arg1 funkcji)
    while (it->nast != NULL)       // szukaj ostatniego elementu (ten co nie ma nastepnika)
      it = it->nast;                     // poprzez przechodzenie po liscie (wskaznikach na nastepniki)
    it->nast = ne;                     // ustaw nastepnik w ostatnim elemencie na nowo utworzony wezel (dolacz nowy wezel do listy)
    return lista;                        // zwroc poczatek listy
  }
}
Pozdrawiam.
Awatar użytkownika
eaglefly
Użytkownik
Użytkownik
Posty: 52
Rejestracja: 25 mar 2008, o 22:07
Płeć: Mężczyzna
Lokalizacja: Wołomin
Podziękował: 16 razy

Funkcja dodajaca elementy do struktury

Post autor: eaglefly »

Dzieki:)
ODPOWIEDZ