gpt4 book ai didi

c++ - 一个关于c++的语法问题

转载 作者:行者123 更新时间:2023-11-28 01:08:12 26 4
gpt4 key购买 nike

BinaryTree* sortedListToBST(ListNode *& list, int start, int end) {
if (start > end) return NULL;
// same as (start+end)/2, avoids overflow
int mid = start + (end - start) / 2;
BinaryTree *leftChild = sortedListToBST(list, start, mid-1);
BinaryTree *parent = new BinaryTree(list->data);
parent->left = leftChild;
list = list->next;
parent->right = sortedListToBST(list, mid+1, end);
return parent;
}

BinaryTree* sortedListToBST(ListNode *head, int n) {
return sortedListToBST(head, 0, n-1);
}

这是一个将排序列表传输到 BST 的函数。我不明白第一行。为什么“ListNode *&”...如果只是“ListNode*”为什么错了?谢谢你的任何解释。

谢谢。还有一个问题..如果只是“ListNode &list”它一定是错误的,为什么我们还需要“*”,.. C++ 业余爱好者请原谅我的愚蠢问题

最佳答案

这是对指针的引用。您对 ListNode 所做的任何更改(使其指向其他内容)都会影响传递给函数的变量。

如果你删除它,递归调用,例如BinaryTree *leftChild = sortedListToBST(list, start, mid-1);,将修改 list 的拷贝而不是 实际的 list,代码的行为会有所不同。

关于c++ - 一个关于c++的语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5043368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com