显示然后删除链接列表C ++

时间:2019-03-08 17:11:52

标签: c++ linked-list

我们的任务是显示链接列表,然后删除每个节点,因此,如果再次调用该函数,它将不显示任何内容。列表看起来不错,但是我陷入了无限循环,不确定发生了什么。

这里是读取到该结构的文本文件(第一个数字为acctNos,第二个数字为Balance

98 45.70
72 15.0
12 0.0
56 43.26
83 123.0
28 931.96
123 12.38

struct familyFinance{
    int acctNos;
    float Balance;
    struct familyFinance* nextNodePointer;
};

void spitThemOut(struct familyFinance* &ptrHead)
{
    familyFinance* tempPtr;
    familyFinance* tempPtr2;
    tempPtr = ptrHead;
    tempPtr2 = ptrHead;

    while(tempPtr != nullptr)
    {
        cout<<"Acct, Balance: "<<temptPtr->acctNos<<" "<<tempPtr->Balance<<endl;
        tempPtr = tempPtr->nextNodePointer;
        delete tempPtr2;
        tempPtr2=nullptr;
    }
    ptrHead = nullptr;
}

1 个答案:

答案 0 :(得分:1)

指针不像是好事。更多并不一定更好。

在您的代码中,tempPtr2是毫无意义的。如果要在打印列表时消除列表,只需将ptrHead沿列表向下走,在前进tempPtr之前捕获到ptrHead,然后在下一次迭代之前将其删除。这也消除了对ptrHead = nullptr;

进行硬设置的需要

结果如下:

void spitThemOut(struct familyFinance* &ptrHead)
{
    while (ptrHead != nullptr)
    {
        cout << "Acct, Balance: " << ptrHead ->acctNos << " " << ptrHead ->Balance << endl;
        familyFinance *tempPtr = ptrHead;
        ptrHead = ptrHead->nextNodePointer;
        delete tempPtr;
    }
}