我无法弄清楚插入功能有什么问题。
基本上在main函数中我要求用户输入一个整数,它应该遍历列表RECURSIVELY并按顺序插入数字。如果您还有其他需要,请告诉我。
当我打印出列表时,它只打印出0两次
In the main:
**This is looped**
printf("Enter the value you want to insert: ");
scanf(" %d", &integer);
current = insert(&head, integer);
temp = current;
while(temp)
{
printf("%d\n", temp->num);
temp = temp->next;
}
node* insert(node** head, int integer)
{
node* temp = malloc(sizeof(node));
node* temp1;
node* new;
if(*head == NULL)
{
temp->num = integer;
temp->next = *head;
*head = temp;
}
else if((*head)->num > integer)
{
temp = *head;
temp1 = temp->next; //breaks the link
temp->next = new; //creates a new node
new->num = integer; //adds int
new->next = temp1; //links new node to previously broken node
*head = temp;
}
else
insert(&((*head)->next), integer);
return(temp);
}
非常感谢!
答案 0 :(得分:3)
if(*head == NULL)
{
(*head)->next == temp;
temp->num = integer;
temp->next = *head;
*head = temp;
}
这是错误的并且会导致读取无效,因为* head为NULL,因此(*head)->next
无效。它将从NULL + offset
读取。 offset
取决于node
数据类型的定义。
答案 1 :(得分:1)
while(temp)
{
printf("%d\n", current->num);
temp = temp->next;
}
我认为您希望打印temp->num
而不是current->num
。