Lista jednokierunkowa za pomocą struktury - błąd konsoli

0

Witam , mam problem z zaimplementowaniem listy za pomoca wskaźników. W momencie gdy próbuje skompilować program (który niby jest bezbłędny) konsola mi sie wyświetla i od razu przestaje odpowiadać, zawiesza sie. W czym jest problem?

#include <iostream>
using namespace std;

struct element {

	element *next;
	int key;

};

struct lista {

	element *head;


	void nowy( int akey)
	{
		
		element *nowy = new element;
		if ( head == 0)
		{
		nowy->key = akey;
		head = nowy;
		}
   else
    {
        // w przeciwnym wypadku wędrujemy na koniec listy
        element *temp = head;
 
        while (temp->next)
        {
            // znajdujemy wskaźnik na ostatni element
            temp = temp->next;
        }
 
        temp->next = nowy;  // ostatni element wskazuje na nasz nowy
        nowy->next = 0;     // ostatni nie wskazuje na nic
    }
	}

	void przegladaj()
	{
		element *temp = head;
		while (temp->next != NULL)
		{
			cout << "Klucz to: " << temp->key <<endl;
			temp = temp->next;
		}

	}

};




int main()
{
	lista list;
	list.nowy(10);
	list.nowy(3);

	list.przegladaj();

	system("pause");
	return 0;
}
0

Doprawdy fascynujące. Pewnie spędziłeś dużo czasu szukając zarówno na internecie jak i na tym forum istniejących już rozwiązań na twój problem.
Jak ten artykuł, który ukrywa się niczym słoń w żurawinie _ i w którym jest nawet konkretnie przykład twojego problemu.

0
 element *head; 

Nie ma inicjalizacji, a zaraz później to porównujesz.

No i zastanawia mnie czemu raz porównujesz adresy z NULL a raz z 0.

PS. W tym kodzie jest więcej błędów.

0

Próbowalem zainicjalizowac na samym początku tworzenia jako 0 nic to nie dało.
Porównuje NULL a raz 0, dlatego że próbowalem skorzystać z fragmentu kodu znalezionego na necie po prostu go wklejając żeby znaleźć błąd w programie i sie nie udało.
Jak jest więcej błędów to czy mógłbyś mi je wskazać?

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