我正在用 C 编写一个程序,将字符串转换为链接列表并更改它们。
出于某种原因,在我调用反向函数,然后打印列表后,它会在打印反向列表之前打印一个新行。
例如,假设我的“列表”包含... a->p->p->l->e->NULL
在 main() 中,如果我调用... print(list);打印(列表);
我的输出:
apple
apple
但是,在 main() 中,如果我调用... print(list);列表=反向(列表);打印(列表);
我的输出:
apple
/*empty line*/
elppa
这是我的 rev()
node *rev(node *head){
node *r_head = NULL;
while (head) {
node *next = head->next;
head->next = rev_head;
r_head = head;
head = next;
}
return r_head;
}
最佳答案
你似乎把列表颠倒得太好了;列表末尾的 NULL
正在成为新的头部,这会创建您所关心的空白空间。
要修复此问题,我建议检查 while 循环内的 head->next
是否为 NULL
:
node *rev(node *head){
node *r_head = NULL;
while (head->next) {
node *next = head->next;
head->next = rev_head;
r_head = head;
head = next;
}
r_head = head;
return r_head;
}
此代码尚未经过测试,但我相信它应该可以工作。
关于c - 在 C 中打印不需要的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750482/