给定位置,我将如何返回该给定位置的值,并从链表中删除该值?
我认为,我所拥有的仅适用于删除一个值,但不能返回它。
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;
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;