【发布时间】:2015-10-02 23:20:19
【问题描述】:
在这段代码中,当我尝试插入到链表的前面时,我一直遇到分段错误。我认为这与头部没有正确更换有关。在这个程序中,篮子是节点。我使用的调试器指出函数中的最后一行是问题,但我不确定它的来源。
include <cstdlib>
#include <iostream>
#include <ctime>
#include "BasketList.h"
using namespace std;
Basket::Basket(int _datum, Basket * _next):
egg_num(_datum), nextBasket(_next)
{}
int Basket::getEggs() const
{
return egg_num;
}
Basket const* Basket::getNextBasket() const
{
return nextBasket;
}
BasketList::BasketList() :
head (NULL)
{}
void BasketList::insertBasket(int eggs)
{
Basket *currPtr = head;
Basket *prevPtr = NULL;
Basket *newBasketPtr;
if(eggs < head->egg_num)
{
currPtr->nextBasket = head;
head = currPtr;
}
while(currPtr != NULL && eggs > currPtr->egg_num)
{
prevPtr = currPtr;
currPtr = currPtr->nextBasket;
}
newBasketPtr = new Basket(eggs, currPtr);
prevPtr->nextBasket = newBasketPtr;
}
【问题讨论】:
-
你能给我们一个minimal complete example吗?它会为我们省去很多繁琐的工作。
-
prevPtr 在您第一次插入时几乎可以肯定是 NULL。