【发布时间】:2018-08-19 04:35:57
【问题描述】:
尝试按字母顺序将学生插入链接列表。学生有名字和年龄。它们按名称排序,如果名称相同,则按年龄排序。
我可以正确地获得名称部分,但年龄有点棘手。分解的部分是第一个 if 语句。当一个新学生与列表中的第一个人同名时,他们必须按年龄排序,但是当我尝试使用该代码时,它会给我一个分段错误。其余代码可以工作。
这是code:
Student* insert(Student* student, Student* list)
{
Student* current;
if (list == NULL || (precedes(student->name, list->name) > 0) || strcmp(student->name, list->name) == 0){
if (strcmp(list->name, student->name) == 0) { // goes wrong here i think
if (student->age < list->age) {
student->next = list;
list = student;
} else {
student->next = list->next;
list->next = student;
}
} else {
student->next = list;
list = student;
}
} else {
current = list;
while(current->next != NULL && (precedes(current->next->name, student->name) > 0)) {
current= current->next;
}
if (current->next != NULL && strcmp(current->next->name, student->name) == 0) {
if (current->next->age > student->age){
student->next = current->next;
current->next = student;
} else {
student->next = current->next->next;
current->next->next = student;
}
} else {
student->next = current->next;
current->next = student;
}
}
return list;
}
【问题讨论】:
标签: c linked-list insert