Kopiowanie elementów listy dwukierunkowej

0

Słynny już chyba na tym forum projekt, w "którym trzeba wrzucać listy na stos".
Mam problem z kopiowaniem całej listy, zaimplementowałem taką metodę, ale ona wykonuje się tylko dla pierwszego elementu.
Zaznaczam, że w założeniu należy skopiować całe listy, nie tylko wskaźniki do nich.

 
void CopyList (DLlist *Lstara, DLlist *Lnowa)
{ 
	ListElem *temp = Lstara->front; 
	while (temp)
	{
		Lnowa->push_front(temp);
		temp = temp->next;
	}	
 }

push_front wygląda tak:

ListElem * push_front(ListElem * p)
    {
      p->next = front; 
      p->prev = NULL;
      if(front) front->prev = p;
      front = p;
      if(!back) back = front;
      counter++;
      return front;
    }
0

(...) ale ona wykonuje się tylko dla pierwszego elementu.

Dzieje się tak dlatego, ponieważ push_front dołącza węzeł ze starej listy do nowej, zamiast stworzyć nowy i przepisać do niego wartość.

0

Ja Ci tylko powiem, że nie możesz użyć while w tym projekcie oprócz maina ;).

0

Jakiś pomysł jak to rozwiązać?

0

Zastanów się nad zamianą listy na stringa.
String to też pewna lista znaków.

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