剑指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%
全部评论
你好,请问在哪可以看剑指offer的题目
点赞 回复 分享
发布于 2019-04-01 14:54
“stack s”?不用声明类型的吗?
点赞 回复 分享
发布于 2019-01-10 00:50
只看了反转链表,空链表就通不过了。后面的top K肯定也是有问题的。自测用例考虑不全所以才会这样。
点赞 回复 分享
发布于 2019-01-10 00:09
第二题,可能本身炼表长度不够k。你对栈的pop,首先要确定栈不为空才能操作
点赞 回复 分享
发布于 2019-01-09 23:38
第一题那个newhead直接赋值top有待考虑栈空不空
点赞 回复 分享
发布于 2019-01-09 23:37

相关推荐

拒绝996的悲伤蛙很...:此贴终结|给路过的牛友分享一下心得👇 实习的时候不要光埋头干活,身边的大佬同事才是真·宝藏人脉!大胆请教他们工作以及职场上的问题以我的经历,我的带教有十几年工作经验,做过运维、后端开发、web测试,现在是高级软测,是行走的避坑指南 我之前纠结要不要学Web测试简历,被他一句话点醒:Web发展成熟,岗位需求在缩,AI对互联网的冲击可能以后架构+开发+测试一人包揽。现在用户更多用的是移动端APP/小程序,相比之下天天守着电脑刷网页的人基数小。 这里我的纠结得到反馈,于是我又把简历发给带教,获得了一对一的简历指导。 感兴趣的可以看看: 1.教育背景:本科→本科(全日制) 2.实习经历:总体问题不大,但第2点要稍作修改,可以写但做功课,如风机、水箱……可能会问用哪个供应商的?使用寿命、型号、电压电流、多少秒会触发逻辑? 3.项目经历(坑太多,大型翻车现场): - 项目名越直白越好,让人一眼就知道你干了啥。 -用的什么语言设计核心接口,异步执行做功课,涉及线程问题,被问可回答n个功能是如何错开异步执行的 - “验证任务消费……阻塞丢包”“高负载稳定性”这种词,没三五年开发功底不要写,不然面试时被问线程、数量级、CPU占用,内存带宽等影响性能的直接原地社死。 -做功课 -做功课,测了哪些模块,如何设计,接口流量抓包,token,变量…… -做功课,要熟悉网络协议…… 带教之前做互联网开发的时候面试过很多人,总的来说不要为了显得项目高大上过渡包装,写了就要做好拷打的准备
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
程序员花海_:项目描述写的太少了 多写一点 先写业务 再写技术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务