详解:
ListNode(int x, ListNode* next) : val(x), next(next) {}
是 ListNode
结构体的构造函数。
-
ListNode(int x, ListNode* next)
:这是构造函数的声明部分。指定了构造函数的名称为ListNode
,参数列表包括一个整数x
和一个指向ListNode
类型的指针next
。 -
: val(x), next(next) {}
:这是构造函数的定义部分,使用了初始化列表。初始化列表是在构造函数体之前使用冒号:
分隔的部分,用于初始化成员变量。-
val(x)
:这个初始化列表项将构造函数的参数x
的值赋给成员变量val
。这样,在创建ListNode
对象时,可以通过构造函数传入一个值,并将该值赋给val
。 -
next(next)
:这个初始化列表项将构造函数的参数next
的值赋给成员变量next
。这样,在创建ListNode
对象时,可以通过构造函数传入一个指向下一个节点的指针,并将该指针赋给next
。
-
需注意:next
是一个指针类型,它指向下一个 ListNode
对象。通过构造函数,我们可以在创建新节点时,指定它的值和下一个节点的指针。
示例:
使用 ListNode(int x, ListNode* next)
构造函数创建一个链表:
struct ListNode {int val;ListNode* next;ListNode(int x, ListNode* next) : val(x), next(next) {}
};int main() {ListNode* node3 = new ListNode(3, nullptr); // 创建节点 3,没有下一个节点ListNode* node2 = new ListNode(2, node3); // 创建节点 2,下一个节点是节点 3ListNode* node1 = new ListNode(1, node2); // 创建节点 1,下一个节点是节点 2// 输出链表的值ListNode* current = node1;while (current != nullptr) {std::cout << current->val << " ";current = current->next;}std::cout << std::endl;return 0;
}
通过 ListNode(int x, ListNode* next)
构造函数创建了一个简单的链表,其中节点的值分别为 1、2、3。每个节点都指向下一个节点。