给定位置,如何返回给定位置的值,并从链接列表中移除该值?
我所拥有的,我认为,只对移除一个值有效,而不是返回它。

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

关于c - 从链表中删除并返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17692338/

10-16 11:13