我在使用此代码时遇到问题。我很确定它正在交换中。
这行:curr->Data() = nextEl.Data()
给我以下错误:
“表达式必须是可修改的左值”
任何帮助表示赞赏。先感谢您。
这是我的冒泡排序算法的代码:
class Node
{
private:
int data;
Node* next;
public:
Node() {};
void Set(int d) { data = d;};
void NextNum(Node* n) { next = n;};
int Data() {return data;};
Node* Next() {return next;};
};
class LinkedList
{
Node *head;
public:
LinkedList() {head = NULL;};
virtual ~LinkedList() {};
void Print();
void AddToTail(int data);
void SortNodes();
};
void LinkedList::SortNodes()
{
Node *curr = head;
Node *nextEl = curr ->Next();
Node *temp = NULL;
if(curr == NULL)
cout <<"There is nothing to sort..."<< endl;
else if(curr -> Next() == NULL)
cout << curr -> Data() << " - " << "NULL" << endl;
else
{
for(bool swap = true; swap;)
{
swap = false;
for(curr; curr != NULL; curr = curr ->Next())
{
if(curr ->Data() > nextEl ->Data())
{
temp = curr ->Data();
curr ->Data() = nextEl ->Data();
nextEl ->Data() = temp;
swap = true;
}
nextEl = nextEl ->Next();
}
}
}
curr = head;
do
{
cout << curr -> Data() << " - ";
curr = curr -> Next();
}
while ( curr != NULL);
cout <<"NULL"<< endl;
}
最佳答案
你这样做是不对的。您不能更改函数返回的temp变量的值。
但是您可以通过这种方式使其工作..
int& Data() {return data;};
尽管这不是一个好习惯。而是只使用您拥有的二传手。
curr->Set(nextEl->Data());
关于c++ - 冒泡排序链接列表C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11570193/