删除已添加的公式void deleteFormulastruct Formula head if head == NULL printf未已添加的公式。n; return; printf请选择要删除的公式:n; printFormulashead; int index; scanfd &index; if index 1
要实现删除最后一个公式的功能,可以在删除公式之前先遍历到最后一个公式的位置。以下是完善后的代码:
// 删除已添加的公式
void deleteFormula(struct Formula** head) {
if (*head == NULL) {
printf("未已添加的公式。\n");
return;
}
printf("请选择要删除的公式:\n");
printFormulas(*head);
int index;
scanf("%d", &index);
if (index < 1) {
printf("无效的选项,请重新输入。\n");
return;
}
if (index == 1) {
struct Formula* temp = *head;
*head = (*head)->next;
free(temp);
printf("公式删除成功!\n");
return;
}
struct Formula* current = *head;
int i = 1;
while (current->next != NULL && i < index - 1) {
current = current->next;
i++;
}
if (current->next == NULL) {
printf("无效的选项,请重新输入。\n");
return;
}
if (current->next->next == NULL) {
struct Formula* temp = current->next;
current->next = NULL;
free(temp);
printf("公式删除成功!\n");
return;
}
struct Formula* temp = current->next;
current->next = temp->next;
free(temp);
printf("公式删除成功!\n");
}
在原有的代码基础上,添加了处理删除最后一个公式的情况。首先判断最后一个公式的下一个指针是否为NULL,如果是,说明当前只有一个公式,直接删除即可。然后再判断当前公式的下一个指针的下一个指针是否为NULL,如果是,说明当前公式的下一个公式就是最后一个公式,将当前公式的下一个指针设置为NULL即可
原文地址: https://www.cveoy.top/t/topic/iXTR 著作权归作者所有。请勿转载和采集!