Witam to jest mój programik listy 1 kierunkowej nie jest jeszcze do końca skończony bo mam problem niby wstawianie nowego
węzła za pomocą funkcji DodajNapoczatek jest poprawne kompiluje się dobrze ale w czasie debugowania jak chce dodaj nowy element to wyskakuje błąd czy ktoś może pomóc ??
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Wezel
{
float dane;
Wezel *nastepny;
};
Wezel *poczatek=NULL;
int DodajNapoczatek(Wezel *poczatek,float dane)
{
Wezel tmp;
tmp=new Wezel;//(Wezel)malloc(sizeof(Wezel))
if(tmp=NULL)
{
cout<<"brak pamieci!"<<endl;
return 1;
}
tmp->dane=dane;//tutaj wyskakuje błąd podczas działania programu nie wiem czemu :(
tmp->nastepny=poczatek;
poczatek=tmp;
return 0;
}
int dodajzabiezacy(Wezel *biezacy,float dane)
{
Wezel *tmp;
tmp=new Wezel;
if(tmp==NULL)
{
cout<<"brak pamieci"<<endl;
return 1;
}
tmp->dane=dane;//tu wpisanie danych
tmp->nastepny=biezacy->nastepny;
biezacy->nastepny=tmp;
return 0;
}
void usunpoczatek(Wezel *&poczatek)
{
Wezel *tmp;
tmp=poczatek;
poczatek=tmp->nastepny;
delete tmp;//free(tmp)
}
void usunnastepny(Wezel *poprzednik)
{
Wezel *tmp;
tmp=poprzednik->nastepny;
poprzednik->nastepny=tmp->nastepny;
delete tmp;
}
void usunAll(Wezel *&poczatek)
{
Wezel *tmp;
while(poczatek!=NULL)
{
tmp=poczatek;
poczatek=tmp->nastepny;
delete tmp;
}
}
void drukuj(Wezel *poczatek)
{
Wezel tmp;
for(tmp=poczatek;tmp!=NULL;tmp=tmp->nastepny)
{
cout<<"jakas dana : "<<tmp->dane<<endl;
}
}
int _tmain(int argc, _TCHAR argv[])
{
int zakonczenie=9;
while(zakonczenie!=1)
{
float war;
system("CLS");
cout<<"\nlista jednokierunkowa podaj opcje"<<endl;
cout<<"1 koniec programu"<<endl;
cout<<"2 dodanie do listy "<<endl;
cout<<"3 dodanie kilku losowych el. do listy "<<endl;
cout<<"4 zdjecie z listy"<<endl;
cout<<"5 zdjecie kilku el z listy"<<endl;
cout<<"6 czyszczenie listy"<<endl;
drukuj(poczatek);
cout<<": ";
cin>>zakonczenie;
switch(zakonczenie)
{
case(1):
cout<<"koniec programu"<<endl;
system("PAUSE");
return 0;
case(2):
cout<<"jaka wartosc dodac : ";
cin>>war;
DodajNapoczatek(poczatek,war);
break;
case(3):
cout<<"ile dodac : ";
cin>>war;
for(int q=0;q<war;q++)
{
}
break;
case(4):
if(1)
{
cout<<"lista jest pusta\n";system("PAUSE");
}
else
{
}
break;
case(5):
cout<<"ile zdjac : ";
cin>>war;
if(1)
{
cout<<"lista jest pusta\n";system("PAUSE");
}else
{
for(int q=1;q<=war;q++)
{
}
}
break;
case(6):
break;
}
}
system("PAUSE");
return 0;
}