[C++] Problem z listą jednokierunkową

Witam. Mam problem z najprostszą listą. Wydaje mi się że wszystko jest dobrze, ale program się załamuje podczas wykonywania. Co jest nie tak.

#include 

#include 

#include 


using namespace std;


struct lista {

int data;

lista *next;

};


lista* nowy (lista *first, int data)

{ lista *wsk;

wsk = new lista;

wsk->data = data;

wsk->next = first;

return wsk;

};


void wyswietl (lista *first)

{

while (first!=NULL)

{

cout<data;

first = first->next;

}

}

int main()

{

lista* first;

lista* last;


first = last = nowy(first,1);

first = nowy(first,2);

wyswietl(first);

system("pause");

return 0;

}
first = last = nowy(first,1);

Odwołujesz się do nieistniejącego obiektu, first jest niezainicjowany przed przypisaniem do last.

Inaczej bym to zrobił, przede wszystkim funkcje pełniące rolę konstruktora i destruktora.

lista* first=0; // i pójdzie jak z płatka  [/code]

A na dodatek radzę lista zamienić na elista, i stworzyć strukturę

[code=php]struct lista { elista *first,*last; } 

No tak, prosta sprawa. I dzięki za rady