首页 > 解决方案 > 如何返回值为 NULL 的变量指针

问题描述

我正在做一个涉及遍历节点链表的项目,为了做到这一点,我需要能够检查 Node.next() 是否有值或者它是否为 NULL。目前我正在使用

if (node->GetNext()==NULL){
  //do stuff
}

但我为此遇到了分段错误。

//Funcion in LinkedList class

void LinkedList::InsertEnd(Node* newNode){
  if (m_head==NULL){
    m_head=newNode;
    cout << "Node set as m_head\n";
  }else{
    Node* temp = m_head;
    int i=1;

    do{
      temp=temp->GetNext();
    }while(temp->GetNext()==NULL);

    temp->SetNext(newNode);
    cout << "Node added at index" << i << endl;
  }
  cout << "Node inserted successfully\n\n";
}


//Node class

Node::Node(){
  m_next = nullptr;
}

Node::Node(bool value){
  m_value = value;
  m_next = nullptr;
}

void Node::ReplaceValue(){
  m_value = !m_value;
}

void Node::SetNext(Node* next){
  m_next = next;
}

Node* Node::GetNext(){
  return m_next;
}
bool Node::GetValue(){
  return m_value;
}

Node::~Node(){
}

InsertEnd应该添加newNode到当前链接列表的末尾,但是当我GetNext在节点类中调用时,我得到了这个分段错误

Program received signal SIGSEGV, Segmentation fault.
0x0000000000401278 in Node::GetNext (this=0x0) at Node.cpp:21
21        return m_next;

标签: c++

解决方案


做检查只需做 -

while(temp->next != NULL)
{
  //do stuff
}

推荐阅读