【发布时间】:2018-12-21 08:46:25
【问题描述】:
我目前正试图交换我的堆的数据,我知道你可以使用递归来交换二叉树堆中的最后一个和第一个节点,但我试图只从根中获取数据并将其交换最后一个节点中的数据实际上在做同样的事情,但我尝试过的一切都不起作用。
我知道 C 是参考语言传递,所以我尝试创建一个交换函数,该函数将双指针传递给每个节点,但如果我这样做,我将无法访问数据。
这是代码:
void swap(Node * one, Node * two){
Node *temp = *one;
**one->data = **two->data;
**two->data = temp->data;
}
我也试过这个:
void swap(Node * one, Node * two){
PData * pOne = malloc(sizeof(PData*));
PData * pTwo = malloc(sizeof(PData*));
*pOne = *(PData*)one->data;
*pTwo = *(PData*)two->data;
one->data = pTwo;
two->data = pOne;
}
所以我想问题是,有没有其他方法可以在堆中交换数据,然后使用递归或 while 循环?
【问题讨论】:
-
请在您的问题中包含
Node定义的源代码。还请提供一个示例,说明如何在您的代码中使用此swap()函数。
标签: c recursion heap pass-by-reference