gpt4 book ai didi

C - 按升序插入链表

转载 作者:行者123 更新时间:2023-12-05 01:27:23 26 4
gpt4 key购买 nike

我正在尝试创建一个程序,将数字按升序插入到链表中。这是我的插入功能。它适用于插入一些数字而不是其他数字。我认为这与最后一部分有关,但我无法弄清楚。

node* insert(node* head, int value) {

//check if head hasn't been created
if (head == NULL) {
head = malloc(sizeof(node));
if(head == NULL) {
printf("Failed to create head node");
return head;
}
head->value = value;
head->next = NULL;
return head;
}

//create a new node
node *newNode;
newNode = malloc(sizeof(node));
if(newNode == NULL) {
printf("Failed to create node");
return newNode;
}
newNode->value = value;
newNode->next = NULL;

//see if new node should be placed before head
if (value < head->value) {
newNode->next = head;
return newNode;
}

//search through to find correct spot and insert the node
node *temp = NULL;
temp = head;
while(temp->next != NULL && temp->value < value) {
temp = temp->next;
}
newNode->next = temp->next;
temp->next = newNode;
return head;

}

最佳答案

以下部分不好

//search through to find correct spot and insert the node
node *temp = NULL;
temp = head;
while(temp->next != NULL && temp->value < value) {
temp = temp->next;
}
newNode->next = temp->next;
temp->next = newNode;

例如像这样修复:

node *temp ,*prev;
temp = head;
while(temp != NULL && temp->value <= value) {
prev = temp;
temp = temp->next;
}
newNode->next = temp;
prev->next = newNode;

node *temp ,*prev;
temp = head->next;
prev = head;
while(temp != NULL && temp->value < value) {
prev = temp;
temp = temp->next;
}
newNode->next = temp;
prev->next = newNode;

关于C - 按升序插入链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21788598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com