Dodawanie elementów do listy w dowolne miejsce

0

Witam.Funkcja ma dodawac element w dowolne miejsce. Teraz dodaje mi do calej listy ten sam element. Np chce dodac 5 to w calej liscie jest 5 pozniej gdy ja wywolam z 10 to w calej liscie zamieni 5 na 10.. co jest zle ?

 template<class T>
bool list<T>::insert(int miejsce, T const &element)
{ 
   

   list<T> *tmp = new list<T>;
   list<T> *nowy = new list<T>;
  
    int licznik=0;
    if(ilosc>0)
    {
     tmp=tail;
     while(licznik!=miejsce) 
     {
  
      tmp=tmp->next;
      licznik++;    
     }
     
      nowy->next=tmp;
      nowy->prev=tmp->prev;
      tmp->prev=nowy;
      nowy->value=element; 
      if(nowy->prev==NULL)
        tail=nowy;
      if(nowy->next==NULL)
        head=nowy;     
        ilosc++; 
   
    }
     else
     {         //dodawanie pierwszego elementu w liscie
      nowy->value=element;
      nowy->next=NULL;
      nowy->prev=NULL;
      head=tail=nowy;
      ilosc++;   
          
    }
     delete tmp;
     delete nowy;
    return true;
}
0

nie rozumiem opisu, napisz to po polsku. Jezeli chcesz zrobic zeby o indeksie 5 dodal jakis nowy item to po prostu musisz zrobic tak

poprzedni->next = dodawany
dodawany->next = nastepny
0
  1. Brak kodu
  2. Nie używaj nagich new i delete - masz kontenery i smart pointery
  3. jedną z nielicznych zalet listy jest dodawanie i usuwanie elementów w O(1). Jeśli iterujesz po niej od początku aby symulować indeksację tracisz tę zaletę.
1

Skoro to cpp to proponuję <vector>

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