获取节点():
Node<type> getNode(int position) {
Node<type> *item = head;
for (int i = 0; i < position; ++i) {
item = item->next;
}
return *item;
};
节点交换代码:
Node<Guitar*> temp;
temp.element = list.getNode(l).element;
temp.next = list.getNode(l).next;
list.getNode(l).element = list.getNode(h).element;
list.getNode(l).next = list.getNode(h).next;
list.getNode(h).element = temp.element;
list.getNode(h).next = temp.next;
我正在为我的计算机科学课做一个项目,几天后就到期了。我想使用相当简单的快速排序对链接列表进行排序,但是在交换列表中的节点时我一直在努力解决一个奇怪的问题。作为参考,getNode() 函数返回列表中某个索引处的节点,这些节点包含指向吉他对象的指针以及下一个节点指针。我已经试验了几个小时,我发现像这样的行,“list.getNode(h).element = temp.element;” 是说指向列表中节点中吉他对象的指针被分配了临时对象中指针的值。这通常可以工作,但此时我收到一个错误,指出左侧不是可修改的左值。但是,我可以创建一个指针并将其放在赋值运算符的左侧,而不会出现任何错误。另外,当我在前面使用解引用运算符(*)时,左侧没有错误,但这并没有成功交换节点。我肯定错过了什么。