[C] - problem z przkazaniem do funkcji wskaźnika na listę

0

stworzyłem następujące struktury:

struct stringi{
	char znak;
	struct stringi *next,*prev;
};

struct listholder{
struct stringi *first,*last;
}*tekst_jawny_H,*szyfrogram_H,*haslo_H;

Chciałbym stworzyć jedną funkcje push, ktora będzie mogła stworzyć listę i dopisywać do niej elementy, do każdego z trzech wskaźników: *tekst_jawny_H,*szyfrogram_H,*haslo_H
Napisałem coś takiego: (printfy z numerkami do kontroli wykonania funkcji)

void push(struct listholder *holder,char c){
printf("o\n");
struct stringi *wsk;
printf("1\n");
wsk = (struct stringi*) malloc(sizeof(wsk));
printf("2\n");
wsk->znak=c;
printf("3\n");
wsk->prev=holder;
printf("4\n");
if (holder->first!=NULL) wsk->next=holder->first->next; else wsk->next=holder->last;
printf("5\n");
if (holder->first!=NULL) holder->first->prev=wsk; else holder->first=wsk;
printf("fin.\n");
}

Po uruchomieniu zwraca exit code 5.

Co robię źle z tymi wskaźnikami? (nic się nie wyświetla - żadna linia się nie wykonuje;/)
Jak powinno wyglądać wywołanie tej funkcji?

0

Wcięcia! Tego się nie da czytać!

wsk->prev=holder;

warning: assignment from incompatible pointer type


<code noframe>prev

jest typu stringi*

, a przypisujesz mu <code noframe>listholder*

.
Dalej nie analizowałem.

A, jeszcze jedno:

wsk = (struct stringi*) malloc(sizeof(wsk));

co to ma robić? przecież sizeof(wsk)

 zwraca tylko rozmiar wskaźnika.

1 użytkowników online, w tym zalogowanych: 0, gości: 1