【问题标题】:I am trying to delete a node from Linked List ,but some run time error is there我正在尝试从链接列表中删除一个节点,但存在一些运行时错误
【发布时间】:2021-07-27 18:56:09
【问题描述】:

为什么在while循环中不打印current->val的值,

 while(i<=count-B-1)
    {
        cout<<i<<endl;
        current=current->next;
        cout<<current->val<<endl;
        i++;
    }

这是完整的代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
ListNode* Solution::removeNthFromEnd(ListNode* A, int B) {
    int count=0;
    ListNode *current=A;
    while(current!=NULL)
    {
        count++;
        current=current->next;
    }
    if(B>count)
    {
        return A->next;
    }
    if(A->next=NULL)
    {
        return A->next;
    }
    current = A;
    int i=0;
    while(i<=count-B-1)
    {
        cout<<i<<endl;
        current=current->next;
        cout<<current->val<<endl;
        i++;
    }
    // cout<<current->val<<endl;
    current->next=current->next->next;
    return A;
    
}

【问题讨论】:

    标签: pointers linked-list


    【解决方案1】:

    一些问题:

    • 循环不循环的原因是你无意中将列表减少到只有一个节点:

      if(A->next=NULL)
      

      应该是:

      if(A->next==NULL)
      

      一个好的编译器/IDE应该对此给出警告。

    • Bcount时,那么第一个节点应该被移除,所以改变

      if(B>count)
      

      到:

      if(B>=count)
      
    • while 循环应该减少一次迭代。所以改变:

      while(i<=count-B-1)
      

      到:

      while(i<count-B-1)
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 2021-05-05
      • 2011-06-06
      • 1970-01-01
      • 2019-12-05
      相关资源
      最近更新 更多