插入节点时单排序链表头指针的移位
Shifting of head pointer of singly soretd linked list while inserting a node
这是一个以 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;
}
很可能您在主程序中使用名称“head
”本身作为列表的起点。在这个函数中,你实际上是在使用 "head" 并使 "head" 遍历直到遇到下一个小于输入值的元素。
所以头部现在是输入值之前的元素。
要解决此问题,只需在 Insert_in_sorted_list(node **head_ref,int data)
函数中将节点指针“*head
”重命名为类似“*currentNode
”的名称。
这是一个以 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;
}
很可能您在主程序中使用名称“head
”本身作为列表的起点。在这个函数中,你实际上是在使用 "head" 并使 "head" 遍历直到遇到下一个小于输入值的元素。
所以头部现在是输入值之前的元素。
要解决此问题,只需在 Insert_in_sorted_list(node **head_ref,int data)
函数中将节点指针“*head
”重命名为类似“*currentNode
”的名称。