Nie mam zielonego pojecia jak sie uzywa TList... nigdy nie lubilem gotowcow -_-....
A co do list to ja zazwyczaj robie tak (to jest TYLKO imho)
( zadnego sprawdzania bledow nie implementowalem! )
#include<stdio.h>
typedef struct element_listy_def
{
struct element_listy_def *nastepny;
struct element_listy_def *poprzedni;
void *dane;
} element_listy;
element_listy *poczatek, *koniec, *obecny;
int liczba_elementow;
inline void lista_poczatek( void )
{
obecny = poczatek;
}
inline void lista_koniec( void )
{
obecny = koniec;
}
int lista_poprzedni( void )
{
if( !obecny->poprzedni ) return 0;
obecny = obecny->poprzedni;
return 1;
}
int lista_nastepny( void )
{
if( !obecny->nastepny ) return 0;
obecny = obecny->nastepny;
return 1;
}
void* lista_dane( void )
{
return obecny->dane;
}
void lista_dodaj( void* nowe )
{
element_listy nasz_nowy = (element_listy)malloc(sizeof(element_listy));
nasz_nowy->dane = nowe;
nasz_nowy->nastepny = NULL;
nasz_nowy->poprzedni = koniec;
if( koniec )
{
koniec->nastepny = nasz_nowy;
}
else
{
poczatek = nasz_nowy;
}
koniec = nasz_nowy;
}
typedef struct costam_def
{
int a;
float b;
} costam;
int main( void )
{
int i;
costam *asdf;
void *xxx; // a moze sie przyda
/* uzupelniamy liste /
for( i = 0; i < 100; i++ )
{
asdf = (costam) malloc( sizeof( costam ) );
asdf->a = i;
asdf->b = i * 10.0f / 25.0f;
lista_dodaj( asdf );
}
/* listujemy od poczatku /
lista_poczatek( );
do
{
/ ciebie TO interesuje /
asdf = (costam) lista_dane( );
printf( "[%i] %f\n", asdf->a, asdf->b );
}
while( lista_nastepny( ) );
/* czyscimy liste /
lista_poczatek( );
while( 1 )
{
if( !obecny) break;
free( obecny->dane );
xxx = (void) obecny;
obecny = obecny->nastepny;
free( xxx );
}
}
ofc lista jest niekompleta... ale dziala =^^=, pozdrawiam