lista dwukierunkowa- problem

Odpowiedz Nowy wątek
2011-08-14 20:46
0

Witam,
mam taki drobny (być może banalny) problem przy tworzeniu listy dwukierunkowej, a konkretnie z przypisywaniem poprzedników

#include<iostream>
using namespace std;
 
struct element{
int numer;
element* nast;//wskaznik do nastepnego elementu listy
//element* pop;
};
 
int main(int argc, char* argv[])
{
element* lista=NULL;//wskaznik do listy, ustawiony na poczatek
int n = 6;//liczba elementow listy
 
while(n>0){
    element* nowy_elem;//wskaznik do nowego elementu
    nowy_elem = new element;
 
    cin>>nowy_elem->numer;
    nowy_elem->nast = lista;
    lista = nowy_elem;
 
    n--;
}
 
system("pause");
return 0;
}

Program tworzy listę 6 elementów.
W jaki sposób przypisać tutaj poszczególnym elementom również poprzedniki. Piszę, bo jak na razie moje próby kończą się błędami w działaniu programu. Dodam, że internet póki co nie pomógł mi w rozwiązaniu problemu;P
z góry dziękuje za odpowiedź;)

ps: jestem początkujący w tej dziedzinie, więc proszę o wyrozumiałość;P

edytowany 1x, ostatnio: Mattt, 2011-08-14 21:03

Pozostało 580 znaków

2011-08-14 21:21
1
while(n>0){
        element* nowy_elem;//wskaznik do nowego elementu
        nowy_elem = new element;
 
        cin>>nowy_elem->numer;
        nowy_elem->nast = lista;
 
        **nowy_elem->pop = NULL;**
        **lista->pop = nowy_elem;**
 
        lista = nowy_elem;
 
        n--;
}
edytowany 2x, ostatnio: Afish, 2011-08-14 21:22

Pozostało 580 znaków

2011-08-14 21:56
0

hmm, szczerze próbowałem dokładnie w ten sposób to zrobić, ale niestety program nie działał prawidłowo...
tak jakby nie wychodził z pętli, bo po wpisaniu pierwszej wartości (numer) kolejnych już się nie da, program się zatrzymuje, chociaż bez żadnych błędów ani ostrzeżeń...Koduje na Turbo C++, ale sprawdzałem to również na Dev C++ i to samo;/

zamień element lista=NULL na element lista = new element dzięki temu dodasz swego rodzaju 'ogon' w liście (tak to się chyba nazywa :D) - Atael 2011-08-14 22:51

Pozostało 580 znaków

2011-08-14 22:18
0

Bo przy pierwszym obiegu pętli lista jest NULLem.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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