NICEDAYSS 2018-09-04 14:26 采纳率: 100%
浏览 495
已采纳

写一个删除链表的倒数第n个节点的问题能通过,但是提交答案显示出错

编程小白,写一个删除链表的倒数第n个节点的问题能通过,但是提交答案显示出错,求大神解答一下,谢谢

/**

  • Definition for singly-linked list.
  • struct ListNode {
  • int val;
  • ListNode *next;
  • ListNode(int x) : val(x), next(NULL) {}
  • };
    /
    class Solution {
    public:
    ListNode
    removeNthFromEnd(ListNode* head, int n){
    int i;
    ListNode *p1=head->next;
    ListNode *p=head;;
    while(p1 !=NULL && n>0){
    p1=p1->next;
    --n;
    }
    while(p1 !=NULL) {
    p1=p1->next;
    p=p->next;
    };

    p->next=p->next->next;
    return head;
    }
    

    };
    错误;Line 24: member access within null pointer of type 'struct ListNode'

  • 写回答

3条回答 默认 最新

  • weixin_40481353 2018-09-05 09:49
    关注

    你需要判断先走的指针是不是空指针
    class Solution {
    public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
    ListNode* fast = head;
    ListNode* slow = head;
    while(n>0) {
    fast = fast -> next;
    n--;
    }
    if(fast == NULL) {
    if(head == NULL) {
    return head;
    } else {
    return head -> next;
    }
    }
    while(fast -> next) {
    fast = fast -> next;
    slow = slow -> next;
    }
    slow -> next = slow -> next -> next;
    return head;
    }
    };

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问