给定位置,我将如何返回给定位置的值,并从链表中删除该值?
我认为,我只能删除一个值,但不会返回它。
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 :(得分: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
答案 1 :(得分: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;