tworzenie tablicy wskaników do listy dwukierunkowej
Ostatnio zmodyfikowano 2018-06-10 19:55
bleda Temat założony przez niniejszego użytkownika |
tworzenie tablicy wskaników do listy dwukierunkowej » 2018-06-05 16:54:54 Witam, jak napisałem w temacie chce stworzyć tablice wskazników do listy dwukierunkowej, zeby móc sortwać wskaźniki zamiast jej elementów. Niestety gdzieś wkrada się błąd. Wszystko się kompiluję, ale przy uruchomieniu dostaję nieskończoną pętla while(p) To jest mój kod: struct E1ist { E1ist * next, * prev; int num; }; struct Jumper { E1ist * head, * tail; unsigned int count; };
void wynik( E1ist **& wsk, Jumper & L, int b ); void l_init( Jumper & L );
int main() { Jumper L; l_init( L ); void funkcjarobiaca liste; int temp = 100; E1ist ** wsk = new E1ist *[ temp ]; wynik( & wsk, L, temp ); }
void wynik( E1ist **& wsk, Jumper & L, int b ) { for( int i = 0; i < b; i++ ) { wsk[ i ] = new E1ist[ i ]; }; int j = 0; E1ist * p; p = L.head; while( p ) { wsk[ j ] = p; cout << wsk[ j ].num << endl; j++; } }
void l_init( Jumper & L ) { L.head = L.tail = NULL; L.count = 0; }
|
|
pekfos |
» 2018-06-05 18:46:58 Niestety gdzieś wkrada się błąd. |
Zdradzę ci wielką tajemnicę świata.. Ctrl+F. while( p )
{ wsk[ j ] = p; cout << wsk[ j ].num << endl; j++; } |
Wyszukaj sobie wszystkie wystąpienia p w tym kodzie. p powinno się jakoś zmieniać, żeby pętla nie była nieskończona. Trudno się oprzeć wrażeniu, że się jednak nie zmienia. |
|
bleda Temat założony przez niniejszego użytkownika |
» 2018-06-05 20:12:41 Ok, wiem, chyba znalazłem. Mea culpa. void wynik( E1ist **& wsk, Jumper & L, int b ) { cout << "rozmariam rownania: " << b << endl; E1ist * p; p = L.head; for( int i = 0; i < b; i++ ) { wsk[ i ] = new E1ist[ i ]; cout << "TEST "; wsk[ i ] = p; p = p->next; cout <<( *( wsk + i ).num ); cout <<( wsk + i ).num; cout << wsk[ i ].num; } }
Jezeli teraz konstrukcja jest poprawna (zakladam, ze jest) dlaczego nie moge wywolac skladowej struktury? ||=== Build file: "no target" in "no project" (compiler: unknown) ===| 0.cpp||In function 'void wynik(E1ist**&, Jumper&, int)':| 0.cpp|215|error: request for member 'num' in '(wsk + ((sizetype)(((unsigned int)i) * 4u)))', which is of non-class type 'E1ist**'| 0.cpp|216|error: request for member 'num' in '(wsk + ((sizetype)(((unsigned int)i) * 4u)))', which is of non-class type 'E1ist**'| 0.cpp|217|error: request for member 'num' in '*(wsk + ((sizetype)(((unsigned int)i) * 4u)))', which is of pointer type 'E1ist*' (maybe you meant to use '->' ?)| ||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| |
|
pekfos |
» 2018-06-05 20:50:55 Kolejność operatorów. Najbliższy poprawnego jest ostatni zapis i kompilator nawet zasugerował ci rozwiązanie. maybe you meant to use '->' ? |
|
|
bleda Temat założony przez niniejszego użytkownika |
» 2018-06-10 19:55:28 Późno, ale szczerze. Dzięki pekfos |
|
« 1 » |