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;
4

2 回答 2

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
于 2013-07-17T06:21:14.530 回答
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;
于 2013-07-17T06:55:35.530 回答