2013-07-17 9 views
0

주어진 위치에서 주어진 위치의 값을 반환하고 링크 된 목록에서 해당 값을 제거하는 방법은 무엇입니까?연결된 목록에서 값 제거 및 반환

필자가 생각하기에, 필자가 생각하기에, 값을 제거하기 위해서만 작동하지만 반환하지는 않는다.

int i; 
node *tmp = head; 
for(i=0 ; i<pos; i++) 
    tmp = tmp->next; 
node* tmp2 = tmp->next; 
tmp->next = tmp->next->next; 
free(tmp2); 
return 0; 
+0

에서 시작합니다. –

+0

다른 변수에 값을 저장 한 다음 해제 한 다음 해당 변수를 반환하십시오. – Ishmeet

+0

추가적으로 코드가 버그가 있습니다. 끝까지 도달했는지 확인하지 않습니까? –

답변

3

일부 로컬 메모리를 사용하여 데이터를 저장하고 삭제 후 반환합니다. 그 위치를 가정

int i; 
int data = 0; //for storing data 
node *tmp = head; 
for(i=0 ; i<pos && tmp != NULL; i++) //Added for checking end of list 
    tmp = tmp->next; 
node* tmp2 = tmp->next; 
tmp->next = tmp->next->next; 
data = tmp2->data; //copy data to local struct before deleting 
free(tmp2); 
return data; //return the data 
0

새로운 할당 된 메모리에이 값을 해제하거나 복사하지 마십시오 1.

int i; 
int data=0; 
node *temp; 
node *del; 
// Do manipulaion if list is not empty 
if(head!=NULL) 
{ 
    //handles removal of head  
    if(pos==1) 
    { 
     del=head; 
     head=del->next; 
     data=del->data; 
    } 
    else 
    {  
     for(i=1,temp=head;i<pos-1 && temp!=NULL; i++,temp=temp->next); // Iterates till previous positon 
     // handles if input position is greater than list size 
     if(temp && temp->next) 
     { 
      del=temp->next; 
      temp->next=del->next; 
      data=del->data; 
     } 
    } 

    free(del); 
} 
return data; 
관련 문제