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

Wyswietlenie elementow listy jednokierunkowej

VPS Starter Arubacloud
0 głosów
593 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,697 wizyt
pytanie zadane 12 maja 2017 w C i C++ przez AndekQR Użytkownik (880 p.)
0 głosów
0 odpowiedzi 428 wizyt
0 głosów
2 odpowiedzi 376 wizyt

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...