【问题标题】:I have to append last n element of LL to front我必须将 LL 的最后 n 个元素附加到前面
【发布时间】:2019-09-17 18:58:30
【问题描述】:
node* append_LinkedList(node* head,int n)
{
    //write your code here
    int count=0;
    node *temp=head;

    while(count<n-1)
    {
        temp=temp->next;
        count++;
    }
    cout<<temp->data;
    return head;
}

下一步我无法思考。得到第n个节点指针后下一步该做什么。

【问题讨论】:

  • 假设 font 应该是 front,那么前面是什么?同一个名单?另一个清单?一个汉堡?我认为你给我们的工作太少了。除非你的问题很清楚,否则只有在幸运对你有利时才能得到有用的答案。
  • 这是一道作业题。在询问如何之前请尝试!如果你尝试,你只能成为一个更好的程序员。话虽如此,这里有一些帮助。您是在列表中添加 n,还是在第 n 个位置不添加任何内容?我相信是前者。此外,附加数据通常是指将节点添加到列表的后面。获取指向尾部的指针,并将新创建的节点附加到它。

标签: c++ data-structures linked-list


【解决方案1】:

这似乎是一个家庭作业问题。

考虑以下术语: 考虑下面的链表,你想把节点 C 移到前面。

A -&gt; B -&gt; C -&gt; D -&gt; E

将您当前的head 指针存储在一个变量中。循环遍历链表,直到找到C。将C的前一个节点标记为null。将 head 存储在 C 并循环直到到达列表末尾,在本例中为 E 。现在将Enext指向原来存储的head

所以你的输出将是 C -&gt; D -&gt; E -&gt; A -&gt; B

【讨论】:

    【解决方案2】:
    Move last n element to front of a given Linked List. I am not getting correct  output
    node* append_LinkedList(node* head,int n)
    {
        //write your code here
        int size=0;
        node *temp2=head;
        while(temp2->next!=NULL)
        {
            temp2=temp2->next;
            size++;
        }
        int count=0;
        node *temp=head;
        node *head3=temp;
        while(count<size-n-1)
        {
            temp=temp->next;
            count++;
        }
        head=temp->next;
        temp->next=NULL;
    
        temp2->next=head3;
        return head;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2017-10-18
      • 2013-07-12
      相关资源
      最近更新 更多