这是一个用c ++样式定义的函数,用于在预先排序的链表中插入值。函数参数是指向链表头部和插入值的指针。请忽略结束条件,列表按非递增顺序排序:
列表15->12->9->6->3
插入元素7
要求o / p:15->12->9->7->6->3
但是它给了9->7->6->3
请指出我的错误,因为我试过但没有得到它,因为我将双指针传递给第一个节点,但没有改变功能。
void llist::Insert_in_sorted_list(node **head_ref, int data) {
node *head, *ptr;
head = *head_ref;
while (head->next->data > data) {
head = head->next;
}
ptr = new node;
ptr->data = data;
ptr->next = head->next;
head->next = ptr;
}
答案 0 :(得分:0)
很可能您在主程序中使用名称“#include <cstdlib>
struct Value
{
size_t value;
operator uintptr_t() { return static_cast<uintptr_t>(value); }
};
int main()
{
Value v;
void* p=reinterpret_cast<void*>(static_cast<uintptr_t>(v)); // This is how the project uses it
// or less verbose
void* p2=reinterpret_cast<void*>(uintptr_t(v));
}
”作为列表的起点。在这个函数中,你实际上是使用“head”并使“head”遍历,直到遇到小于输入值的下一个元素。
因此,头部现在是输入值之前的元素。
要解决此问题,只需将节点指针“head
”重命名为此*head
函数中的“*currentNode
”。