在以下代码中:
void insert(Node *& aNode, int x) {
if (!aNode) {
aNode = new Node(x);
aNode->next = aNode;
return;
}
Node *p = aNode;
Node *prev = NULL;
do {
prev = p;
p = p->next;
if (x <= p->data && x >= prev->data) break; // For case 1)
if ((prev->data > p->data) && (x < p->data || x > prev->data)) break; // For case 2)
} while (p != aNode); // when back to starting point, then stop. For case 3)
Node *newNode = new Node(x);
newNode->next = p;
prev->next = newNode;
}
Run Code Online (Sandbox Code Playgroud)
什么是Node*&aNode?
我应该如何使用此功能,我的意思是,我应该通过哪种类型的参数?
Rei*_*ica 10
我认为这段代码是C++,而不是C,并且Node *&aNode是对a的指针的引用Node,所以你要传递Node*给函数,函数会引用它(所以你Node*指向的内存位置可以改变).
您可能会发现有关References(C++)的维基百科文章很有趣.
一个简单的例子:
#include <iostream>
void addOneToValue(int num) {
++num;
}
void addOneToRef(int &num) {
++num;
}
int main() {
int num = 0;
// print 0
std::cout << num << std::endl;
// print 0 again (addOneToValue() has no effect)
addOneToValue(num);
std::cout << num << std::endl;
// print 1 (addOneToRef() changes the value of num)
addOneToRef(num);
std::cout << num << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
@ crashmstr的评论提醒我,我应该说它们与指针有什么不同.维基百科做得更好,但我可以做到:
| 归档时间: |
|
| 查看次数: |
4639 次 |
| 最近记录: |