2013-05-25 5 views
-3

Я хотел бы получить некоторую помощь о том, как я должен написать эту функцию add() о том, как поместить элементы в последнее пятно списка. Похоже, что это на данный момент:Ввод элемента последним в связанном списке C++

я редактировал его и есть мой класс сейчас:

 #include <iostream> 
     using namespace std; 

     template <class T> 
     class List; 

     template <class T> 
     class Node { 
     public: 
      Node (T *t) : data(t), next(0) {} 
      ~Node(); 
     private: 
      T *data; 
      Node* next; 
      friend class List<T>; 
     }; 

     template <class T> 

     class Predicate { 
     public: 
      Predicate() {} 
      virtual bool operator()(const T& v) = 0; 
     }; 

     template <class T> 
     class List { 
     public: 
      List() : first(new Node<T>(T())) {} //"dummy"-nod först 

      void add(T *t); 
      void remove_if(T t); 
      void remove_if(Predicate<T> &pred); 
      void print(); // skriver alla elementen inom "måsvingar" 

     private: 
      Node<T> *first; 
     }; 

В моей основной у меня есть:

int main() 
    List<int> intlista; 
     intlista.add(new int(1)); 
     intlista.add(new int(2)); 
     intlista.add(new int(3)); 
     intlista.add(new int(2)); 
     intlista.add(new int(4)); 
     intlista.add(new int(5)); 
     intlista.add(new int(6)); 
+1

Лучшая помощь, попробуйте использовать [ 'станд :: list'] (http://en.cppreference.com/w/cpp/container/list) – deepmax

+1

Как реализован «Узел»? Чтобы связать этот список, '' Node'' должен содержать указатель на следующий '' Node''. Добавление элемента в спину может быть выполнено либо путем перемещения этих указателей, либо путем добавления указателя на последний элемент в классе '' List''. – amaurea

+0

@amaurea Я отредактировал главный пост, чтобы вы могли увидеть сами :) –

ответ

3

Начиная с первого узла список, следуйте за узлом next, пока не найдете NULL. Создайте новый узел и назначьте его этому next.

первого> next-> next-> далее -> ... next-> NULL

затем

первого> next-> next-> next-> ... next-> new_node-> NULL

+0

Можете ли вы объяснить, что вы подразумеваете под этим? –

+1

Вместо того, чтобы задавать много вопросов, напишите что-нибудь, что вы написали. Даже если у него нет шансов на работу, он (надеюсь) объяснит, какую часть этого вы не понимаете. –

+0

@MarketingMark у вас есть связанный список. Начните с начала, следуйте по узлам по ссылкам, пока не дойдете до последнего, а затем добавьте к нему «следующий» узел. Если это сбивает с толку, вам следует, вероятно, сделать шаг назад и взглянуть на то, что связанный список концептуально. – juanchopanza

Смежные вопросы