2014-01-23 6 views
-1

몇 가지 작업을 했는데도 여전히 마지막 요소를 삭제할 수 있습니다. 작업을 삭제하면 삭제되는 대신 쓰레기가 남습니다. 나는이 코드가 잘 보이지 않는다는 것을 안다. 그러나 그것은 내가 현재 내 지식에 기초하여 할 수있는 모든 것이다 : 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; 
    } 
} 
+0

누군가가 기꺼이 도와 주겠다고하면 대부분의 코드가 변경되었습니다. 내 코드가 마지막 요소를 먼저 삭제하지 않는 것 같습니다. 중간은 정상적으로 작동하는 것 같습니다. – user3209183

답변

1

좋은 것 잘못 여기에 뭘하는지 말해 수 있다면.

+0

대부분의 것들이 작동하기 전에 비트를 추가했습니다. 내 목록을 인쇄 할 때 마지막 하나를 삭제하면 마지막 하나를 기대합니다.이 노드 대신 쓰레기가 표시됩니다. – user3209183

+0

다음 포인터를 무시하고있는 것을 볼 수 없습니다. 마지막 요소를 가리 킵니다. 그게 지금 잘못된 것인가? – noelicus

관련 문제