【问题标题】:Putting element last in linked list c++ [duplicate]将元素放在链表c ++中的最后
【发布时间】:2013-05-25 12:19:31
【问题描述】:

我想就如何编写这个 add() 函数获得一些帮助,了解如何将元素放在列表的最后一个位置。目前看起来是这样的:

我已经对其进行了编辑,现在开始上课了:

        #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) );

【问题讨论】:

  • 最好的帮助是,尝试使用std::list
  • Node 是如何实现的?对于这个链表,Node 需要包含一个指向下一个Node 的指针。然后可以通过遍历这些指针来在后面添加一个元素,或者另外保留一个指向 List 类中最后一个元素的指针。
  • @amaurea 我已经编辑了主帖,所以你可以自己看看:)
  • 告诉我们你做了什么。搏一搏。你不是通过按 CTRL-C / CTRL-V 和一些鼠标点击和拖动来学习编程的。
  • @MarketingMark 请查看meta.stackexchange.com/questions/40164/…,请不要要求我们修复您的代码,这是一个问答网站,不同于帮助台或论坛。

标签: c++ list linked-list element


【解决方案1】:

从列表的第一个节点开始,沿着 next 节点,直到找到一个为 NULL 的节点。创建一个新节点,并将其分配给该next

first->next->next->next->... next->NULL

然后

first->next->next->next->... next->new_node->NULL

【讨论】:

  • 您能进一步解释一下您的意思吗?
  • 不要问很多问题,而是发布你写的东西。即使它没有工作的机会,它也会(希望)解释你不理解的部分。
  • @MarketingMark 你有一个链接列表。从头开始,通过链接跟随节点,直到到达最后一个,然后添加一个“下一个”节点。如果这令人困惑,那么您可能应该退后一步,看看链表在概念上是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
相关资源
最近更新 更多