使用while循环创建链接列表



我需要创建一个类成员(Binary)的链表,我遇到了一个无限循环问题。Binary类只包含度数(int)和下一个节点指针。在Binary类中,Binary链表的实现是在set_bit方法中执行的。set_bit方法接收两个int,它们要么是1/0 int(bit),要么是阶int。不过此时不需要该bit。

set_bit方法如下:

void Binary::set_bit(int b, int d){
    BinaryNode* current = firstTerm;
    BinaryNode* toSet;
    if (current == NULL) {
        firstTerm = new BinaryNode(d, NULL);
        current = firstTerm;
        cout << "nd: " << d << " <--> current degree: " << current->degree << endl;
        system("pause");
    } else {
        while (current != NULL){
            firstTerm = new BinaryNode(d, current);
            cout << "nd: " << d << " <--> current degree: " << current->degree << endl;
            cout << "first term: " << firstTerm->degree << endl;
            system("pause");
        }
    }
}

在main.cpp文件上,我正在尝试设置以下位:

b1.set_bit(1, 2);
b1.set_bit(1, 5);
b1.set_bit(1, 0);
b1.set_bit(0, 2);

该方法设置第一个位(2),然后进入下一个位(5),然后开始一个无限循环,尝试设置该位。这件事我哪里错了?我向我的实验室讲师寻求帮助,他为我提供了以下代码:为什么实验室讲师的代码也不起作用?

void Binary ::set_bit( int b , int d ){
  BinaryNode * current = firstTerm;
  if (current == NULL ){
    firstTerm = new BinaryNode(d,NULL); // Corrected Line
  }
  while (current != NULL ){
    firstTerm = new BinaryNode(d,firstTerm); // Corrected Line 
  }
}

感谢

当然,您最终会得到无限循环,因为当您尝试插入第二个节点时,current != NULL始终为true,这意味着else节被调用。不幸的是,里面有一个while loop,它的条件总是成立的。

相关内容

  • 没有找到相关文章

最新更新