2013-10-20 4 views
-1

그래서 여기에 문제가 있습니다. 나는 연결리스트의 첫 번째 노드를 삭제하기 위해 노력하고있어 불행하게도 내가 사용에 제한 해요 :링크 된 목록의 첫 번째 노드 삭제

int delete(node* head, int i) 

하여 수행하는 것이 좋습니다 어떤 다른 스레드, 내가 노드를 반환하거나 사용할 수 없습니다 달리 ** 노드 매개 변수 이전 대신 첫 번째 노드의 출력을 0을 삭제 한 후 설정을 인쇄 :

//before 
12, 1, 14, 
//after 
    0, 1, 14, 

함수가 임의의 노드를 제거하도록 설계되지만 I 헤더의 값을 I로 동일한 부분에 붙어있다. 사전에

int delete(node * head, int i) { 
    node * current; 
    current=head; 
    while (current){ 
     if((current=head) && (head->value=i)){ 
      head=current->next; 
      free(current); 
      current=NULL; 
      break; 
     } 
... 
    } 
    return 0; 
} 

감사 : 여기에 첫 번째 노드를 다루는 기능 delete에서 코드입니다.

+0

노드를 반환 할 수 없거나 ** 노드를 사용하는 경우'head'의 값을 어떻게 변경 하시겠습니까? – Kunal

+0

내 생각은 처음에. 불행히도 내 임무는 그 기능을 사용하도록 제한합니다. – User49230

+0

그런 다음 헤드 포인터를 전역으로 설정하십시오. – Kunal

답변

2

링크 된 목록에서 첫 번째 노드를 삭제하는 대신 두 번째 노드의 값을 저장 한 다음 두 번째 노드를 삭제하십시오.

그런 다음 두 번째 노드의 저장된 값을 첫 번째 노드로 복사하면됩니다. 그리고, 당신은 잘 가게됩니다.

예 :

Intitial리스트 - 12 1, 14

스토어 1하고되도록 번째 노드를 삭제

12, 14

복사첫 번째 노드

(1)에 0, 14

그리고 효과적으로 연결리스트의 첫 번째 노드가 제거된다.

+0

확실히 생각하지 못했습니다. 나는 그것을 시도하고 알려주 :) 감사합니다! – User49230

+0

훌륭하게 작동했습니다! 곧 내 최종 답변을 게시 할 예정입니다. 고마워요! – User49230

+0

@ PatrickBuhagiar 환영합니다. – Kunal

관련 문제