【发布时间】:2014-03-14 08:37:38
【问题描述】:
我正在尝试创建一个以升序将数字插入到链表中的程序。这是我的插入功能。它适用于插入一些数字,但不适用于其他数字。我认为它与最后一部分有关,但我无法弄清楚。
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;
}
【问题讨论】:
-
您能否提供表现符合预期以及不符合预期的输入示例?
标签: c linked-list