Napisalem taki prosty programik do tworzenia dowolnie dlugiej listy i mam problem ze zwinięciem jej od początku.
Poproszę o sugestie i dziekuje.
#include <iostream>
#include <time.h>
#include <windows.h>
using namespace std;
struct Wezel
{int liczba;
Wezel *next;
};
struct Kolejka
{
Wezel *first,*last;
};
void dodaj(Kolejka &k);
void drukuj(Kolejka &k);
void kasuj(Kolejka &k);
int main()
{
srand((int)time(NULL));
Kolejka k={0,0};
dodaj(k);
drukuj(k);
kasuj(k);
return 0;
}
void dodaj(Kolejka &k)
{unsigned size;
cout << "Ile chcesz wczytac liczb ? ";
cin >> size;
Wezel *tmp;
tmp = new Wezel;
tmp->liczba=(rand()%100)+0;
tmp->next=0;
k.first=tmp;
k.last=tmp;
for(unsigned i=0;i<size; i++)
{tmp = new Wezel;
tmp->liczba=(rand()%100)+0 ;
tmp->next=0;
k.last->next=tmp;
k.last=tmp;
}
}
void drukuj(Kolejka &k)
{for(const Wezel *i=k.first;i;i=i->next) cout<<i->liczba<< " ";
}
void free(Kolejka &K)
{Wezel *tmp=K.first;
while(K.first!=K.last)
{Wezel *tmp=K.first;
K.first=tmp->next;
delete tmp->liczba;
delete tmp;
}
delete tmp->liczba;
delete tmp;
K.last=0;
K.first=0;
}