C 从链表中删除元素
我得到了一些工作,但我仍然无法得到最后一个元素删除工作,它只是在它的地方留下垃圾,而不是删除它。我知道这段代码看起来不太好,但根据我目前的知识,这就是我所能做的:x。所以,如果有人能帮我删除最后一个元素,或者告诉我我做错了什么,那就太好了C 从链表中删除元素,c,linked-list,C,Linked List,我得到了一些工作,但我仍然无法得到最后一个元素删除工作,它只是在它的地方留下垃圾,而不是删除它。我知道这段代码看起来不太好,但根据我目前的知识,这就是我所能做的:x。所以,如果有人能帮我删除最后一个元素,或者告诉我我做错了什么,那就太好了 struct item { char item_name[30]; char item_state[30]; float item_price; char item_status[30]; float item_pric
struct item {
char item_name[30];
char item_state[30];
float item_price;
char item_status[30];
float item_price_if_not;
struct item *next;
};
struct client {
char client_name[30];
char client_last_name[30];
struct item *item_data;
struct client *next;
};
void DeleteClient2(struct client *temp,struct client **head) {
struct client *prev=*head;
struct client *current = *head;
struct item *currentitem = (*head)->item_data,*save;
if(temp== *head) {
while(currentitem != NULL) {
save = currentitem;
currentitem = currentitem ->next;
free(save);
}
free(temp);
temp->item_data = NULL;
(*head) = (*head)->next;
}
else if(temp->next == NULL) {
while(currentitem != NULL) {
save = currentitem;
currentitem = currentitem ->next;
free(save);
}
temp->item_data = NULL;
free(temp);
}
else if(temp != *head && temp->next != NULL) {
while(prev->next != temp) {
prev=prev->next;
}
prev->next = temp->next;
while(currentitem != NULL) {
save = currentitem;
currentitem = currentitem ->next;
free(save);
}
temp->item_data = NULL;
free(temp);
temp=temp->next;
}
}
您正在从head而不是temp中删除项目数据 除了最后一个之外,在我之前的大部分东西似乎都能正常工作。如果我在打印列表时删除最后一个,我看到的是垃圾而不是这个节点。我看不到你在哪里清空指向最后一个元素的下一个指针。这就是现在的问题所在吗?如果有人愿意帮助的话,更改了大部分代码,这将是非常好的,我的代码似乎没有删除最后一个元素,第一个元素,中间的元素似乎工作正常。