Velocity Reviews > using of * &

# using of * &

Burak
Guest
Posts: n/a

 12-04-2007
void DeleteNode(struct node * & node) {
if (node->left == NULL) {
struct node *temp = node;
node = node->right;
delete temp;
} else if (node->right == NULL) {
struct node *temp = node;
node = node->left;
delete temp;
} else {
// In-order predecessor (rightmost child of left subtree)
// Node has two children - get max of left subtree
struct node **temp = &node->left; // get left node of the
original node

// find the rightmost child of the subtree of the left node
while ((*temp)->right != NULL) {
temp = &(*temp)->right;
}

// copy the value from the in-order predecessor to the
original node
node->value = (*temp)->value;

// then delete the predecessor
DeleteNode(*temp);
}
}

i saw this function on wikipedia.
what does * & mean there(struct node * & node) ?

thanx Burak

vippstar@gmail.com
Guest
Posts: n/a

 12-04-2007
On Dec 4, 4:16 pm, Burak <(E-Mail Removed)> wrote:
> void DeleteNode(struct node * & node) {
> <body>
>
> i saw this function on wikipedia.
> what does * & mean there(struct node * & node) ?

Nothing, it's invalid.
Wikipedia for that example says:
<http://en.wikipedia.org/wiki/Binary_search_tree#Deletion>
> Here is C++ sample code for a destructive version of deletion. (We assume the node to be deleted has already been located using search.)

pete
Guest
Posts: n/a

 12-04-2007
Burak wrote:
>
> void DeleteNode(struct node * & node) {

> delete temp;

> i saw this function on wikipedia.
> what does * & mean there(struct node * & node) ?

That's not C code.

--
pete

Richard Heathfield
Guest
Posts: n/a

 12-04-2007
Burak said:

> void DeleteNode(struct node * & node) {

<snip>

> i saw this function on wikipedia.
> what does * & mean there(struct node * & node) ?

It means either that the Wikipedia article, at the time you saw it, had
most recently been edited by someone who doesn't know C[1], or perhaps it
wasn't actually an article about C code. As far as the C language is
concerned, the code you have shown constitutes a syntax error requiring a
diagnostic message from your implementation. In other words, it's
meaningless.

[1] It wouldn't be the first time. Or the second. Or the third...

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999

santosh
Guest
Posts: n/a

 12-04-2007
Burak wrote:

<snip code>

> i saw this function on wikipedia.
> what does * & mean there(struct node * & node) ?

As vippstar points out, the Wikipedia page clearly mentions that it is
<news:comp.lang.c++>?

Paul Sinnett
Guest
Posts: n/a

 12-04-2007
Burak wrote:
> i saw this function on wikipedia.
> what does * & mean there(struct node * & node) ?

It's c++ and it means that node is a reference to a pointer to a node.
It's probably not a good idea to call the type and the variable by the
same name though.