#include
using namespace std;
struct grupa {
int a;
char b,c,d,e,f,g,h,i,j,k;
grupa *nastepna; // wskaźnik na następny element
grupa(); // konstruktor
};
grupa::grupa() {
nastepna = 0; // konstruktor
}
struct lista {
grupa *pierwsza; // wskaźnik na początek listy
void dodaj_grupa (char b, char c);
void usun_grupa (int nr);
void dodaj_liczbe (int a);
void wyswietl_wszystko ();
lista();
};
lista::lista() {
pierwsza = 0; // konstruktor
}
void lista::wyswietl_wszystko()
{
// wskaznik na pierszy element listy
grupa *wsk = pierwsza;
// przewijamy wskazniki na nastepne elementy
while (wsk)
{
cout << wsk->b <<" " << wsk->c <<" "<< endl;
wsk=wsk->nastepna;
}
}
void lista::usun_grupa (int nr)
{ // jezeli to pierwszy element listy
if (nr==1)
{
grupa *wsk = pierwsza;
pierwsza = wsk->nastepna; //poczatek listy, 1 el. wskazuje na 2 el. itd…
}
// jeżeli nie jest to pierwszy element
if (nr>=2)
{
int x = 1;
// do usuniecia srodkowego elemetnu potrzebujemy wskaznika na osobe n-1
// wskaznik *wsk bedzie wskaznikiem na osobe poprzedzajaca osobe usuwana
grupa *wsk = pierwsza;
while (wsk)
{ // sprawdzamy czy wskaznik jest na osobie n-1 niz usuwana
if ((x+1)==nr) break;
// jezeli nie to przewijamy petle do przodu
wsk = wsk->nastepna;
x++;
} // wskaznik *wsk wskazuje teraz na osobe n-1
// nadpisujemy wkaznik osoby n na osobe n+1
// bezpowrotnie tracimy osobe n-ta
// dodatkowo sprawdzamy czy aby nie jest to ostatni element
// wtedy nalezy wyzerowac ostatni wskaznik
if (wsk->nastepna->nastepna==0)
wsk->nastepna = 0;
// jezeli nie byl to ostatni element
else
wsk->nastepna = wsk->nastepna->nastepna;
}
}
void lista::dodaj_grupa(char b, char c)
{
grupa *nowa = new grupa; // tworzy nowy element listy
// wypełniamy naszymi danymi
nowa->b = b;
nowa->c = c;
if (pierwsza==0) // sprawdzamy czy to pierwszy element listy
{
// jeżeli tak to nowy element jest teraz początkiem listy
pierwsza = nowa;
}
else
{
// w przeciwnym wypadku wędrujemy na koniec listy
grupa *wsk = pierwsza;
while (wsk->nastepna)
{
// znajdujemy wskaźnik na ostatni element
wsk = wsk->nastepna;
}
wsk->nastepna = nowa; // ostatni element wskazuje na nasz nowy
nowa->nastepna = 0; // ostatni nie wskazuje na nic
}
}
void lista::dodaj_liczbe(int a)
{
grupa *nowa = new grupa;
nowa->a = a;
if (pierwsza==0)
{
pierwsza = nowa;
}
else
{
grupa *wsk = pierwsza;
while (wsk->nastepna)
{
wsk = wsk->nastepna;
}
wsk->nastepna = nowa;
nowa->nastepna = 0;
}
}
int main()
{ int xd;
lista *baza = new lista; //tworzymy liste
cin>>xd;
//dodajemy rekordy do bazy
baza->dodaj_liczbe(2);
baza->dodaj_grupa(‘m’,‘p’);
baza->dodaj_grupa(‘a’,‘d’);
baza->dodaj_grupa(‘d’,’\0’);
baza->dodaj_grupa(‘a’,’\0’);
baza->dodaj_grupa(‘J’,’\0’);
baza->dodaj_grupa(‘J’,’\0’);
baza->dodaj_grupa(‘J’,’\0’);
baza->dodaj_grupa(’\0’,‘p’);
baza->dodaj_grupa(’\0’,‘p’);
baza->dodaj_grupa(’\0’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->dodaj_grupa(‘J’,‘p’);
baza->usun_grupa(1);
baza->usun_grupa(3);
baza->usun_grupa(4);
baza->wyswietl_wszystko();
delete (baza);
return 0;}