来自单个链表的尾部的第n个数据

时间:2016-03-12 08:03:51

标签: c linked-list

我不知道为什么我的方法对于给定的问题不起作用。

以下是代码:

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;
        }
    }

}

代码有什么问题吗?

2 个答案:

答案 0 :(得分:5)

  1. 你应该在第二次循环中放入休息,否则它不会终止并导致崩溃。
  2. if(len2==len1-n+1)条件错误。它应该是if(len2==len1-n)

答案 1 :(得分:1)

根据@sat,你应该在找到你的元素后终止,否则while循环永远不会退出,因为下一个节点导航被包装在else中,if条件将继续为真{{1没有增加。

假设第0个元素尾部元素:

len2