Witam. Chciałbym się zgłosić do was z prośbą o wytłumaczenie (jakimś prostym graficznym czy jak sposobem)
listy jedno kierunkowej. Mam 2 książki Pasję c++ i taką książkę z informatyki szkolną (z niej się uczyłęm ale tam mało jest opisane i nie zbyt łatwo) a w pasji c++ są listy ale nie na strukturach tylko na obiektach. Poczytałem trochę książkę i napisałem program taki:
#include<iostream>
#include<conio.h>
#include<cstdio>
#include<new>
using namespace std;
struct lista
{
int a;
lista *nast;
};
lista *ogon=NULL;
//-----------------------------------------------------------------------------------------------------------------
lista* kon(lista *glowa,int liczba)
{
lista* nowy;
try
{ nowy=new lista;}
catch(bad_alloc)
{
cout<<"nie udalo sie barak pamiecie\n";
}
nowy->a=liczba;
nowy->nast=NULL;
if(glowa==NULL)
{
glowa=nowy;
ogon=glowa;
}
else
{ ogon->nast=nowy;
ogon=nowy;
}
return glowa;
}
//-----------------------------------------------------------------------------------------------
void czytaj(lista *glowa)
{
lista *pom;
pom=glowa;
cout<<endl;
while(pom!=NULL)
{
cout<<pom->a<<" ";
pom=pom->nast;
}
}
//-------------------------------------------------------------------------------------------------
lista* pocz (lista *glowa, int liczba)
{
lista *nowy;
try
{
nowy=new lista;
}
catch(bad_alloc)
{
cout<<"brak pam\n";
}
nowy->a=liczba;
nowy->nast=glowa;
glowa=nowy;
return glowa;
}
//-------------------------------------------------------------------------------------------------
int main()
{
lista *pom2=NULL;
lista *gl=NULL;
char odp;
int b;
char wybor;
char abcd;
cout<<"chcesz Byc w programie??:[t/n] ";
cin>>abcd;
while(abcd!='n')
{system("cls");
odp='t';
cout<<"\nPodaj czy chcesz dopisac czy wstawic[p-k]";
cin>>wybor;
switch(wybor)
{
case 'p':
while(odp!='n')
{
cout<<"\nWpisac nowy liczbe?";
cin>>b;
pom2= pocz (gl,b);
gl=pom2;
cout<<"chcesz wpisac liczby jeszcze?";
cin>>odp;
}
break;
case 'k':
while(odp!='n')
{
cout<<"\nWpisac na poczotek liczbe?";
cin>>b;
pom2= kon (gl,b);
gl=pom2;
cout<<"chcesz wpisac liczby jeszcze?";
cin>>odp;
}
break;
}
cout<<"chcesz Byc w programie??: ";
cin>>abcd;
}
cout<<"chcesz czytac?\n[t/n]";
cin>>odp;
if(odp=='t')
czytaj(gl);else cout<<"szkoda\n";
getch();
}
Tak troszkę rozumiem już ale nie do końca. Czemu jak kliknę "p" i będę wpisywał liczby a potem wybiorę "k" to błąd systemu? (może to przez do że NIE MA wskaźnika na poprzedni element po to jednokierunkowa?) i dlaczego jak wpisuje na początek to liczby od końca się wyświetlają. Proszę jak ktoś to umie mi dobrze wytłumaczyć i ma czas niech jakimś sposobem napisze narysuje czy jak bo chciałbym to zrozumieć i umieć. Pozdrawiam.