【发布时间】:2012-07-19 04:33:12
【问题描述】:
我在使用此代码时遇到问题。我很确定它正在交换中。
该行: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;
}
【问题讨论】:
-
您显示的代码甚至不包括您所说的导致错误的行。
-
是的,这是因为我尝试修复它,但是这种类型的行会进入发生交换的第二个嵌套 for 循环的 if 语句中。
-
@malat 这个线程已有 2 年历史,您链接的线程已有 1 年历史......从技术上讲,一个与我的重复
标签: c++ sorting linked-list bubble-sort