我需要创建一个类成员(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
,它的条件总是成立的。