C ++节点分配错误:线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x0)

时间:2018-08-15 01:47:57

标签: c++ struct construct

我正在学习C ++的DSA(链接列表)。 我的链接列表例外。

错误信息:

error

它比应该的更长。

enter image description here

这是我的代码:

定义结构ListNode

Option Explicit

Sub Export_Template()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim NewBook As Workbook
Dim LRow As Long, LCol As Long
Dim FileName

FileName = Application.GetSaveAsFilename(InitialFileName:="Engineering TPD", FileFilter:="Excel Files (*.xlsx), *.xlsx")

If FileName <> False Then
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        Set NewBook = Workbooks.Add
            LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
            LCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

            ws.Range(ws.Cells(4, 1), ws.Cells(LRow, LCol)).Copy
            NewBook.Sheets(1).Range("A1").PasteSpecial xlPasteValues

        NewBook.SaveAs FileName:=FileName, FileFormat:=51
        NewBook.Close False
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End If

End Sub

获取两个链接列表的交集

// Definition for singly-linked list.
struct ListNode {
     int val;
     ListNode *next;
     ListNode(int x) : val(x), next(NULL) {}
 };

构造样本并调用两个链表的交集

 ListNode * Solution_three :: getIntersectionNode(ListNode *headA, ListNode *headB) {

    ListNode * p_one = headA;
    ListNode * p_two = headB;

    if (p_one == NULL || p_two == NULL) {
        return NULL;
    }

    while (p_one != NULL && p_two != NULL && p_one != p_two) {
        p_one = p_one -> next;
        p_two = p_two -> next;


        if( p_one == p_two ){
            return p_one;
        }

        if (p_one == NULL) {
            p_one = headB;
        }
        if (p_two == NULL) {
            p_two = headA;
        }
    }
    return p_one;
}

通过一个断点,我看到链接列表更长了。

我不知道如何取出它。

1 个答案:

答案 0 :(得分:0)

p_one != p_two为何如此?

应该重载运算符!=,以比较节点的值。