Witam. Mam niby banalną rzecz którą chciałbym wykonać, a mianowicie napisać funkjcę która doda mi nowy element do listy.
Pobierenie elementow listy oraz sama struktura wyglądają następująco:
typedef struct znak
{
unsigned char pojedynczy; //element
struct znak *nastepna; //wskaznik na kolejny element listy
}znak;
int main()
{
znak *glowny = NULL;
znak *poprzedni, *biezacy;
printf(" \n\nProgram obliczajacy funkcje haszujaca dla podanego przez uzytkowanika tekstu.\n\n");
printf(" \n Podaj tekst. (enter konczy pobieranie tekstu) ");
while((z = getchar()) != '\n')
{
biezacy = (znak *)malloc(sizeof(biezacy)); //pobieranie
if(glowny == NULL) //znakow
glowny = biezacy; //do
else //listy
poprzedni->nastepna = biezacy;
biezacy->nastepna = NULL;
biezacy->pojedynczy = z;
poprzedni = biezacy;
i++;
dlugosc = i;
}
biezacy = (znak *)malloc(sizeof(biezacy));
poprzedni->nastepna = biezacy;
biezacy->nastepna = NULL;
biezacy->pojedynczy = '\0'; //dodaje NULL na koncu stringa
poprzedni = biezacy;
i++;
biezacy = (znak *)malloc(sizeof(biezacy));
poprzedni->nastepna = biezacy;
biezacy->nastepna = NULL;
biezacy->pojedynczy = 128; //dodaje 10000000(bitowa 1) do listy
poprzedni = biezacy;
i++;
// wstaw_element(poprzedni, nowszy, 128);
(.....)
A oto co sam napisałem i od dobrych paru godzin próbuję modyfikować na różnoraki sposób, ażeby zadziałało..
void wstaw_element(znak *aktualny,znak *nowy, unsigned char a)
{
while(aktualny->nastepna != NULL)
aktualny = aktualny->nastepna;
nowy = (znak *)malloc(sizeof(nowy)); //funkcja wstawiajca element do listy
aktualny->nastepna = nowy;
nowy->pojedynczy = a;
nowy->nastepna = NULL;
aktualny = nowy;
i++;
}
Proszę o jakieś podopowiedzi.
Pozdrawiam.