详解:
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,下一个节点是节点 3
ListNode* 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。每个节点都指向下一个节点。