Napisz funkcję kopiująca za siebie listę 1 razy

0

Cześć! Mam napisać funkcję, która kopiuje za siebie listę(samą siebie). Mam to zrobić na listach jednokierunkowych.

void DodajZa(node*e,int val){   // e - element za który chcemy wstawić
  node*p = new node;
  p->next = e->next;
  p->val = val;
  e -> next = p;
}

node*Clone(node*&H){
  node*p = H;
  while(p){
    node*e = new node;
    e->val = p->val;
    e->next = p->next;
    p->next = e;
    p = e->next;
  }
}

void Add_copy_to_end(node *&H){
  node *R = new node;
  R = Clone(H);
  node*p=H;
  while(p){
    p = p->next;
  } 
  DodajZa(R, R->val);
}

Niestety po uruchomieniu programu wyskakuje mi 0. Czy ktoś widzi błąd?

0
Alexandr.r napisał(a):

Czy ktoś widzi błąd?

Ja tu nie widzę żadnego wiersza bez błędu.

  1. tworzysz new_head=head
  2. W pętli od head do końca, dodajesz przed head oraz zmieniasz new_head=new_node jeżeli new_head==head
0

Witam.

A nie lepiej tu użyć STL który zawiera std::list. A według twoich wymagań to zainteresuj się std::forward_list (Chyba że treść zadania ci to zabrania).

I takie pytanie w jakim języku to jest napisane bo również dobrze może to być pseudokod :D

Życzę miłego dnia.

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