Witam!
Mam problem z listą cykliczną dwukierunkową. Do jej stworzenia wykorzystałem wartownika. Mam też wskaźnik na bieżący element listy. Zależy mi na tym aby ten wskaźnik przeskakiwał na kolejne elementy listy, albo do przodu albo do tyłu. Niestety nie udaje mi się tego zrobić. Oto kod:
Struktura
typedef struct Element {
int liczba;
struct Element *poprz;
struct Element *nast;
}element;
Funkcja dodająca( tutaj też nie wiem czy to jest dobrze):
void dodaj(element *biezacy,int rejestr)
{
element *nowy=(element *)malloc(sizeof(element));
if(biezacy == NULL) //czy pusta
{
nowy->liczba = rejestr;
nowy->nast = nowy ;
nowy->poprz = nowy;
biezacy = nowy;
}
else
{
nowy->liczba = rejestr;
nowy->nast=biezacy->nast;
nowy->poprz=biezacy;
nowy->nast->poprz=nowy;
biezacy->nast=nowy;
}
}
I tutaj funkcja, ktora ma przeskakiwac na kolejne elementy listy:
void przesun(element *biezacy,int liczba) {
int i;
biezacy=biezacy->nast;
for(i=0;i<liczba;i++)
biezacy=biezacy->nast;
}
Co do funkcji dodawania, to nie wiem cz warunek na to czy jest pusta jest dobry. Oto doklaracja wartownika:
element *wartownik=(element*)malloc(sizeof(element));
wartownik->nast=wartownik;
wartownik->poprz=wartownik;
element* biezacy = wartownik;