我不知道为什么我的方法对于给定的问题不起作用。
以下是代码:
void last_to_n(struct node*head,int n)
{
struct node *temp = head;
struct node *temp2 = head;
int len1=0,len2=0;
while(temp!=NULL)
{
len1++;
temp=temp->next;
}
while(temp2!=NULL)
{
if(len2==len1-n+1)printf("%d",temp2->data);
else
{
len2++;
temp2=temp2->next;
}
}
}
代码有什么问题吗?
答案 0 :(得分:5)
if(len2==len1-n+1)
条件错误。它应该是if(len2==len1-n)
。答案 1 :(得分:1)
根据@sat,你应该在找到你的元素后终止,否则while循环永远不会退出,因为下一个节点导航被包装在else中,if条件将继续为真{{1没有增加。
假设第0个元素是尾部元素:
len2