【问题标题】:What is the use of SinglyLinkedList method in this class?这个类中SinglyLinkedList方法有什么用?
【发布时间】:2020-10-18 22:18:22
【问题描述】:

这个类中SinglyLinkedList方法有什么用?

 class SinglyLinkedList {
 public:
 int data;
 SinglyLinkedList *next;
 
 SinglyLinkedList (int data){
 this->data=data;
 this->next=nullptr;
 }};

【问题讨论】:

  • 你在问构造函数是做什么的吗?
  • 不,为什么我们需要上面代码中的构造函数?
  • 与任何其他代码相同——初始化新创建的类实例。
  • 构造函数需要与类具有完全相同的名称(包括标点符号)。有构造函数的原因是:当你创建一个没有构造函数的类的对象时,它的成员的值只是随机值。但是您真正想要的是可预测的,因此您需要在创建对象时设置可预测的值 (SinglyLinkedList s{data,NULL};),或者您需要有一个构造函数来为您执行此操作,这样您就不必记住这样做每次。
  • 因为如果你不初始化next指向nullptr的指针,遍历节点会调用Undefined Behavior,因为它不知道在哪里结束清单是。 (就像 C 字符串中的 nul-terminating 字符)

标签: class this singly-linked-list


【解决方案1】:

这本身不是 C++11 问题(甚至不是 C++)。所以理想情况下,一开始就不应该在这里发布。

其次,singlylinkedlist 不是构造函数。类名是SinglyLinkedList,而函数名是singlylinkedlist。

假设这是一个错字,并且这里的意图是有一个构造函数,这个构造函数的目的是初始化链表中的节点。

网上有很多资源可以解释 C++ 中的链表结构,将来请在此处发布问题之前参考它们并做好功课。这有助于社区专注于真正的 C++11 问题。

【讨论】:

    【解决方案2】:

    你得到了错误的信息。 SingleLinkedList 用于保存实际节点。它充当容器。您上面的代码是实际的 Node 类,而不是单链表

    //this is the actual nodes that will be stored in linked list which is an another class
    class Node{
       public:
           int data;
           Node *next; //pointer to the next Node
    
           Node(int value){
               data = value;
               next = nullptr;
           }
    };
    
    //linked list class
    class singly_LinkList{
        public:
            Node* head;
            Node* tail;
            //the head will hold the very first Node object
            //the tail will hold the very very Node object
    };
    

    【讨论】:

    • 你不需要两个类。单链表的任何子序列都是有效的列表
    猜你喜欢
    • 2015-06-24
    • 2023-03-10
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多