c-从链表中删除并返回值



给定位置,如何返回该给定位置的值,并从链表中删除该值?

我认为,我所拥有的只是去除一个值,而不是返回它

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;

使用一些本地内存存储数据,并在删除后返回。

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

假设位置从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;

相关内容

  • 没有找到相关文章

最新更新