用指针有点小麻烦
Having a little trouble with pointers
下面是用来反转链表的。直到最后一行,它似乎都是有效的。当我调试时,"current"answers"result"都是相同类型的(Node*),"result"是颠倒的列表。但是当函数完成时,current只拥有"结果"列表的第一个值。有人知道为什么当函数完成时"当前"不是完整的列表吗?
struct Node {
int data;
Node* next;
};
void reverseList(Node** head)
{
Node* current = *head;
Node* result = NULL;
while (current != NULL)
{
Node* temp = current;
current = temp->next;
temp->next = result;
result = temp;
}
current = result;
}
显示的逻辑存在多个问题。
我们可以从一个明显的观察开始,reverseList
的目标显然是反转一个单链表。
第二个观察是,该函数接受一个参数,一个指向头节点的指针,并返回一个void
。
从,我们得出结论,该函数应该更新head
节点,但在代码中没有这样做。
另外,真的没有理由让这个函数接受这样一个双指针,一个指向头节点的指针,并更新它。对于函数来说,采用一个指向列表第一个元素的普通指针,即现有的head
指针,然后返回反向列表的head
指针要简单得多。
通过这个简单的更改,生成的逻辑变得更短、更简单:
Node *reverseList(Node *head)
{
Node *current=NULL;
while (head)
{
Node *next=head->next;
head->next=current;
current=head;
head=next;
}
return current;
}
。
你需要在你的算法结束时更新头部:
current = result;
*head = current;
相关文章:
- 具有小对象优化功能的智能指针
- 有没有办法在递归中使用指针来查找数组的最小值?
- 从较小类型的指针定义的范围构造向量
- C 中的指针和功能方面的麻烦
- 在此任务上遇到麻烦,我们需要使用指针和数组来找到文本文件中某些数字的平均值,中值和模式
- 使用指针麻烦
- 操作员超载和 *该指针的麻烦
- 使用动态内存分配和指针查找最大值、最小值和平均值
- 相同的这个指针和可变类型的麻烦
- 可疑的指针转换转换(区域太小)
- 通过指针填充自定义的类 - 与构造函数的麻烦
- QT小部件指针
- 函数,它接受三个参数:指向双数组的指针、指向最小值的指针和指向最大值元素的指针
- 如何将从文件上传小部件上传的假脱机文件传递到C file*f指针
- 指针向量与值向量 大内存块与小内存块的性能损失
- 从函数返回最小值作为指针
- 使用最小的指针位
- 如何与其他小部件共享共享小部件指针
- 用指针有点小麻烦
- Qt -在QAction中存储一个小部件指针