몇 가지 작업을 했는데도 여전히 마지막 요소를 삭제할 수 있습니다. 작업을 삭제하면 삭제되는 대신 쓰레기가 남습니다. 나는이 코드가 잘 보이지 않는다는 것을 안다. 그러나 그것은 내가 현재 내 지식에 기초하여 할 수있는 모든 것이다 : x. 그래서 누군가가 마지막 요소 작업을 위해 내 삭제를 받고 좀 도와 아니면 당신은 머리에서보다는 온도에서 항목 데이터를 삭제하고링크 된 목록에서 요소 삭제하기
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;
}
}
누군가가 기꺼이 도와 주겠다고하면 대부분의 코드가 변경되었습니다. 내 코드가 마지막 요소를 먼저 삭제하지 않는 것 같습니다. 중간은 정상적으로 작동하는 것 같습니다. – user3209183