在链接列表C ++中找到第一个共享节点

时间:2020-04-05 08:21:01

标签: c++

我正在尝试创建此函数,该函数将返回两个链接列表的第一个共享节点。但是,即使尝试了很长时间,仍然存在无法修复的错误。

这是我的代码:

#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <stack>
#include "LinkList.hpp"
 using namespace std;

void FindFirstSharedNode(ListNode *pNode1, ListNode *pNode2, ListNode *pShared)
{
    stack<ListNode> stack1;
    stack<ListNode> stack2;

    if(pNode1!=nullptr && pNode2!=nullptr)
    {
        while(pNode1!=nullptr)
        {
            stack1.push(*pNode1);
            pNode1=pNode1->m_pNext;
        }
        while(pNode2!=nullptr)
        {
            stack2.push(*pNode2);
            pNode2=pNode2->m_pNext;
        }
        ListNode *node1=nullptr;
        ListNode *node2=nullptr;
        while(!stack1.empty() && !stack2.empty())
        {
            (*node1)=stack1.top();  //Xcode bug: Thread 1: EXC_BAD_ACCESS (code=1, address=0x8)
            (*node2)=stack2.top();
            if(pNode1==pNode2)
            {
                *pShared=*pNode1;
                stack1.pop();
                stack2.pop();
            }

        }
        cout<<pShared->m_nKey<<" ";

我看不出问题出在哪里? 有人可以告诉我吗? 非常感谢。

0 个答案:

没有答案