Kod: Zaznacz cały
#include<iostream>
using namespace std;
class rekord
{
friend class lista;
int dane;
rekord *wsk;
};
class lista
{
private:
rekord *poczatek;
rekord *koniec;
public:
lista();
void dodaj(int);
void zamien(int, int);
bool pusta();
void wyswietlwszystkie();
int iloscelementow();
void usunelement(int);
};
lista::lista()
{
poczatek=NULL;
koniec=NULL;
}
bool lista::pusta()
{
return(poczatek==NULL?1:0);
}
void lista::dodaj(int liczba) //dodaj elelement na koniec listy
{
if(pusta())
{
rekord *wskpom; // wskaznik pomocniczy
wskpom = new rekord; //tworzenie rekordu
poczatek=wskpom; //przypisanie wskaznika
koniec=wskpom;
wskpom->dane=liczba; //wpisanie danych
wskpom->wsk=NULL; //wskaznik rekordu
}
else
{
rekord *wskpom; // wskaznik pomocniczy
wskpom = new rekord; //tworzenie rekordu
koniec->wsk=wskpom; //przypisanie wskaznika nowego rekordu do ostatniego rekordu listy
koniec=wskpom; //wskaznik do konca listy
wskpom->dane=liczba; //wspisanie danych
wskpom->wsk=NULL; //wskaznik rekordu
}
}
void lista::wyswietlwszystkie()
{
rekord *wskpom=poczatek;
while(wskpom!=NULL)
{
cout << wskpom->dane << " ";
wskpom=(wskpom->wsk); //przypisanie nastepnego wskaznika
}
if(pusta()==false)
cout << endl;
}
int lista::iloscelementow()
{
rekord *wskpom=poczatek;
int licznik=0;
while(wskpom!=NULL) //przypisanie nastepnego wskaznika
{
licznik++;
wskpom=(wskpom->wsk);
}
return(licznik);
}
void lista::usunelement(int numer)
{
rekord *wskpom=poczatek;
if(numer==1)
{
poczatek=(poczatek->wsk);
delete wskpom;
}
if(numer >1 && numer < iloscelementow())
{
int licznik=1;
while(licznik<numer-1) //szukanie elementu poprzedzającego element usuwany
{
licznik++;
wskpom=(wskpom->wsk);
}
rekord *wskpom2=(wskpom->wsk)->wsk;
delete (wskpom->wsk);
(wskpom->wsk)=wskpom2;
}
if(numer==iloscelementow())
{
int licznik=1;
while(licznik<iloscelementow()-1)
{
licznik++;
wskpom=(wskpom->wsk);
}
delete (wskpom->wsk);
wskpom->wsk=NULL;
koniec=wskpom;
}
}
int main()
{
int tablica[]={1, 2 , 3 , 4 , 5, 6};
lista lista1;
for(int i=0; i<6; i++)
lista1.dodaj(tablica[i]);
lista1.wyswietlwszystkie();
cout << lista1.iloscelementow() <<endl;
lista1.usunelement(4);
lista1.wyswietlwszystkie();
cout << lista1.iloscelementow();
}
edit wskpom= to skrót od wskaznika pomocniczego.