• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyswietlenie elementow listy jednokierunkowej

Object Storage Arubacloud
0 głosów
606 wizyt
pytanie zadane 19 stycznia 2019 w C i C++ przez dzuulie Nowicjusz (120 p.)

Witam!

Mam problem z wyswietleniem listy w menu. Gdy dodaje elementy to ta lista mi sie ladnie pokazuje, ale gdy pozniej chce przejsc do pozycji drugiej - czyli wyświetlanie wszystkich elementów listy, to juz jej nie ma. Bardzo prosze o pomoc! 

#include <iostream>
using namespace std;

struct tListaItem
{
    int dane;
    tListaItem *nastepny;
};

void nowy(tListaItem** glowa, int wartosc)
{
    if (*glowa == NULL)
    {
        *glowa = new tListaItem();
        (*glowa)->nastepny = NULL;
        (*glowa)->dane = wartosc;
    }
    else {
        tListaItem *tmp = *glowa;
        tListaItem *nowy = new tListaItem();
        
        nowy->nastepny = NULL;
        nowy->dane = wartosc;
        
        while (tmp->nastepny)
        {
            tmp = tmp->nastepny;
        }
        tmp->nastepny = nowy;
        
    }
}

void pokaz(tListaItem* glowa)
{
    int element =0;
    while (glowa)
    {
        cout << glowa-> dane << endl;
        element++;
        glowa = glowa->nastepny;
    }
    cout << "Lista ma " << element << " elementow" << endl;
}

int main()
{
poczatek:
    tListaItem *glowa = NULL;
    int a ,liczba;
    char wybor;
    cout << "MENU" << endl;
    cout <<"a. dodawanie elementow na koncu listy \nb. wyswietlenia wszystkich elementow listy \nc. usuniecie dowolnego elementu listy \nd. zakoncz program" << endl;
    cin >> wybor;
    switch(wybor)
    {
        case 'a':
        {
            cout << " Ile chcesz dodac elementow? " << endl;
            cin >> liczba;
            for(int i=0; i<liczba; i++)
            {
                cout << "Podaj" << i <<  "element:" << endl;
                cin >> a;
                nowy(&glowa, a);
                pokaz(glowa);
            }
            break;
        }
        case 'b':
        {
            pokaz(glowa);
            break;
        }
        case 'c':
        {
            
        }
        case 'd':
        {
            exit(0);
            break;
        }
    }

    goto poczatek;
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 20 stycznia 2019 przez gagyn Stary wyjadacz (11,050 p.)

Problem jest spowodowany tym, że za każdym razem, kiedy przechodzisz na początek, wskaźnik glowa ustawiasz na null, tym samym tracisz dostęp do listy.

tListaItem *glowa = NULL;

Linijka poczatek: musi znajdować się po przypisywaniu wartości null, tak aby nastąpiło to tylko raz - na początku programu.

komentarz 20 stycznia 2019 przez Hiskiel Pasjonat (22,830 p.)
To ja może naprostuję - linijka poczatek: i goto poczatek; nie musi i nie może tam być.
komentarz 20 stycznia 2019 przez dzuulie Nowicjusz (120 p.)

@gagyn, Faktycznie. Dzięki wielkie!

Podobne pytania

0 głosów
1 odpowiedź 1,735 wizyt
pytanie zadane 12 maja 2017 w C i C++ przez AndekQR Użytkownik (880 p.)
0 głosów
0 odpowiedzi 441 wizyt
0 głosów
2 odpowiedzi 386 wizyt

92,539 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...