C ++需要帮助访问链表

时间:2017-04-15 01:16:57

标签: c++ list segmentation-fault

class Node {
public:
    Node();
    void setNext(Node*);

private:
    void* item;
    Node* next;
};

void Node::setNext(Node* n)
{
    next = n;
}

class List {
public:
    List();
    void addFirst(void*);
    void reset();
    void* getCurItem();

private:
    Node* head;
    Node* current;
};

void List::addFirst(void* obj)
{
   Node *newNode = new Node(obj);
   newNode->setNext(head);
   head = newNode;
}

void List::reset()
{
   current = head;
}

void* List::getCurItem()
{
    return current->getItem();
}


Polynomial::Polynomial(std::ifstream& input){
    List *polyCo = new List();
    List *polyEx = new List();

    bool exit = false;
    double coefficient=0;
    int exponent=0;

    while(!exit && input.good()){

    input >> coefficient;

            if(coefficient != -9999.99){

            input >> exponent;
            cout << "Exponent before: " << exponent << endl;
            cout << "Coefficient before: " << coefficient << endl;
            int *ExPtr =  &exponent;
            double *CoPtr  =  &coefficient;

            cout << "Exponent: " << *(ExPtr) << endl;
            cout << "Coefficient: " << *(CoPtr) << endl;
            polyCo->addFirst(ExPtr);
            polyEx->addFirst(CoPtr);
            cout << polyCo->getCurItem() << endl; //SEG FAULT
            }
   }

  polyEx->reset();
  polyCo->reset();

}

我正在将文件中的数字读入两个单独的链接列表。尝试访问链接列表中的任何值时,我收到分段错误。

首先,我将概述我认为我的addFirst()函数是如何工作的,因为我可能只是错误地实现它。调用addFirst()时,将创建一个新节点,并将读入的数据设置为等于新节点的成员。列表中的现有节点被向前推送,并且创建的新节点成为头部。这两个节点也是链接的。

除了我的函数实现之外,还有其他一些完全错误,但至少它是一个很好的起点,以及分段错误的来源。

0 个答案:

没有答案