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.