Witam mam problem taki :
stworzyłem wskaźnik do struktury listeczka i nadałem mu adres początkowy NULL. Potem wyołuje funkcje 2 razy z poniższymi parametrami :
dodaj(lista, 123);
dodaj(lista, 22);
początek funkcji
parametr current = 000000 ; // zgadza się
konczac funkcje current posiada 004E48E8 wiec mnie wiecej wszystko sie zgadza
potem drugie wywołanie
i znowu current ma adres = 000000000
a konczac fnkcje 004E48F8
ma ktoś pomysł czemu nie działa ??
#include <stdio.h>
#include <stdlib.h>
struct listeczka
{
int wartosc;
struct listeczka *next;
};
void wypiszmiejsce(struct listeczka *head)
{
struct listeczka * current;
current=head;
if(current == NULL)
{
while (current != NULL)
{
printf ("element %d \n", current->wartosc);
current = current->next;
}
}
printf("\n twoja lista jest pusta pi");
}
int sprawdzac(struct listeczka *headd, int a)
{ struct listeczka *current;
current=headd;
while (current != NULL)
{
if (a == current->wartosc)
{
return 1;
}
current = current->next;
}
return 0;
}
void dodaj(struct listeczka *headik, int x )
{
struct listeczka *current;
struct listeczka *nowy;
current = headik;
nowy = malloc(sizeof(struct listeczka));
printf("adres current przed nadaniem mu nowego adresu%p\n", current);
if(current == NULL)
{
printf("\nJSTEM TUTAJ1");
nowy->wartosc=x;
current=nowy;
nowy->next=NULL;
printf("\nJSTEM TUTAJ1,5");
}
else
{
printf("\nJSTEM TUTAJ2");
while (current->next != NULL)
{
current=current->next;
}
nowy->wartosc = x;
current->next = nowy;
nowy->next=NULL;
}
printf("current po nadaniu adresu %p\n", current);
}
int main()
{
struct listeczka *lista = NULL;
//lista = malloc(sizeof(struct listeczka));
//lista = NULL;
struct listeczka *head1;
head1 = malloc(sizeof(struct listeczka));
struct listeczka *head2;
head2 = malloc(sizeof(struct listeczka));
struct listeczka *head3;
head3 = malloc(sizeof(struct listeczka));
struct listeczka *head4;
head4 = malloc(sizeof(struct listeczka));
head1->wartosc=666;
/*printf("wyswietalmy wartoscv listy z wagonika 1 %d\n", head1->wartosc ); */
head1->next=head2;
head2->wartosc=3;
head2->next = head3;
/*printf("wyswietalmy wartoscv listy z wagonika 1 %d\n", (head1->next)->wartosc ); */
head3->wartosc=9999;
head3->next=head4;
/* printf("wyswietalmy wartoscv listy z wagonika 1 %d\n", (head2->next)->wartosc ); */
head4->wartosc=69;
head4->next=NULL;
wypiszmiejsce(lista);
dodaj(lista, 123);
dodaj(lista, 22);
wypiszmiejsce(lista);
/*
dodaj(lista, 3322);
dodaj(lista, 322);
dodaj(lista, 622);*/
/*wypiszmiejsce(head1);*/
/*
if (sprawdzac(head1, 69) == 0)
{
printf("nie znaleziono \n");
}
else
printf(" znaleziono \n");
*/
}