Pierścień dwukierunkowy. Porównanie dwóch piersc

0

Mam maly problem.
typedef struct mring
{
struct ring *first;
int klucz;
} *mptr;

typedef struct ring
{
int data;
int key;
struct ring *next;
struct ring *prev;
}*ptr;

void init_list(mring **head) //inicjuje pierscien
{
(*head)-&gtfirst = NULL;
}

OK to jest deklaracja dwoch struktur jedna jest deklaracja struktury struktur a druga jest zwykla strukturka.
Chodzi glownie o to aby mozna bylo dodawac dowolnie duzo pierscieni.
Teraz wykladowca zarzyczyl sobie abym mu porownal dwa pierscienia ze soba.
I tu zaczyna sie problem.
np piszac funkcje: void porownaj(mring **head) mam tylko jeden wskaznik na jeden pierscien, no a jak porownac dwa pierscienia gdy sie ma jeden przekazany do funkcji?!?!!?!?
Probowalem zaladowac po kolei pierscienie do dwoch tablic, no ale tablice musza miec z gory zadeklarowana wielkosc, a przeciez pierscien moze miec xxx elementow.
Kto mi pomoze ?
Moze rozwiazanie jest bardzo proste, ale ja juz widze rozowe plamki.

Pozdrawiam:
MAZAK

0

Już wpadłem na pomysł!!!
Wystarczy dodac do struktury mring wskaznik na nastepny *next element i dodac oprocz **head jeszcze jeden element np head_nast, ktoremu przypisujemy **head_nast = **head-&gtnext;
i mamy dwa elementy, a zwazywszy ze mamy pierscien , to gdy przejdziemy na nastepny element , a w pierscieniu bedzie tylko jeden to wskaznik **head_nast bedzie == **head.
!!!!!!!!!!!!!! udalo sie!!!!!!!!!!!!!!!!!!!!!!

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