【问题标题】:Several implementation for a linked list - C++链表的几种实现 - C++
【发布时间】:2012-09-17 17:43:49
【问题描述】:

我写了一个简单的 LinkedList 类。我首先有一个 Node 类:

class Node
{
   public:
       Node* next;
       int value;
       Node(int val)
       {
          value = val;
          next = NULL;
       }

       Node(int val, Node* y)
       {
          value = val;
          next = y;
       }
}

LinkedList 的实现很简单,有一个Node* head 成员和一个addNode(int value) 成员函数。

还有哪些其他方法可以实现链表?是否可以提供其他此类实现或提示相关文档?

感谢和问候。

【问题讨论】:

  • 嗯,如何:insert()、delete()、find()、size(),只是初学者?
  • 您可以查看std::forward_list 界面以获得灵感。 Youy 可能需要在前面、后面、中间和移除处插入。您还应该考虑如何复制列表对象。
  • 在你知道你真正需要它之前不要实施任何东西。否则你就掉进了程序员可能掉入的最大陷阱。

标签: c++ arrays methods linked-list implementation


【解决方案1】:

标准库定义了一个可以使用的双向链表实现(例如,参见here)。我建议您使用它,除非您有充分的理由不这样做。

【讨论】:

    【解决方案2】:

    Boost 有一些实现: http://www.boost.org/doc/libs/1_51_0/doc/html/intrusive/slist.html http://www.boost.org/doc/libs/1_51_0/doc/html/intrusive/list.html

    【讨论】:

      【解决方案3】:
      1. deleteNode
      2. findNode
      3. Mabe 创建一个迭代器。

      在构造函数和私有数据成员中使用初始化列表也更好。 NULL 用于 C,使用 0 代替。

      class Node
      {
         private:
            Node* next;
            int value;
         public:
      
            Node(int val) : next(0), value(val) {}
            Node(int val, Node *n) : next(n), value(val) {}
            int getVale() { return value}
      };
      

      【讨论】:

        猜你喜欢
        • 2021-11-13
        • 2015-06-03
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        相关资源
        最近更新 更多