剑指offer的题,自测都能通过,提交时牛客提示段错误

剑指off中的这2个题目:
1.反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId=11168&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
2.链表中的倒数第k个节点
https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&tqId=11167&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking  
我反转链表的代码如下:

ListNode* ReverseList(ListNode* pHead) {
    stack s;
    while (pHead) {
        s.push(pHead);
        pHead = pHead->next;
    }
    ListNode* newHead = s.top();
    s.pop();
    ListNode* p = newHead;
    while (!s.empty()) {
        p->next = s.top();
        s.pop();
        p = p->next;
    }
    p->next = NULL;
    return newHead;
}
倒数第k的节点的解法如下:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
    if (pListHead == NULL)
        return NULL;
    stack s;
    while (pListHead != NULL) {
        s.push(pListHead);
        pListHead = pListHead->next;
    }
    for (size_t i = 0;i < k - 1;++i) {
        s.pop();
    }
    return s.top();
}
我在VS中的测试代码如下:
int main() {
    ListNode *p1 = new ListNode(1);
    ListNode *p2 = new ListNode(2);
    ListNode *p3 = new ListNode(3);
    ListNode *p4 = new ListNode(4);
    p1->next = p2;
    p2->next = p3;
    p3->next = p4;
    p4->next = NULL;

//
    //ListNode *ret = FindKthToTail(p1, 2); //输出3
    //cout << ret->val << endl;


    ListNode *ret = ReverseList(p1);
    while (ret) {
        cout << ret->val << " ";
        ret = ret->next;
    }
    cout << endl;//输出 4 3 2 1
    return 0;
}
为什么在牛客中提交就提示:
您的代码已保存
段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
case通过率为0.00%
全部评论
第一题那个newhead直接赋值top有待考虑栈空不空
点赞 回复 分享
发布于 2019-01-09 23:37
第二题,可能本身炼表长度不够k。你对栈的pop,首先要确定栈不为空才能操作
点赞 回复 分享
发布于 2019-01-09 23:38
只看了反转链表,空链表就通不过了。后面的top K肯定也是有问题的。自测用例考虑不全所以才会这样。
点赞 回复 分享
发布于 2019-01-10 00:09
“stack s”?不用声明类型的吗?
点赞 回复 分享
发布于 2019-01-10 00:50
你好,请问在哪可以看剑指offer的题目
点赞 回复 分享
发布于 2019-04-01 14:54

相关推荐

沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务