尝试对链表进行排序时出现左值错误
Posted
技术标签:
【中文标题】尝试对链表进行排序时出现左值错误【英文标题】:lvalue error when trying to sort linked list 【发布时间】:2016-04-13 04:08:22 【问题描述】:我希望程序将链表从最小到最大重新排列,但是当我尝试制作 prev->link()=temp;
和 minum->link()=head_ptr;
时,我不断收到“错误:需要左值作为赋值的左操作数”
node* previouse_minimum(node*& head_ptr)
node* cursor;
node* minimum;
node* prev;
minimum=head_ptr;
for(cursor=head_ptr; cursor != NULL; cursor=cursor->link())
if(cursor->data() < minimum->data())
minimum=cursor;
cursor = head_ptr;
prev = cursor;
while(cursor->link() != minimum)
cursor = cursor->link();
prev = cursor;
cout << prev->link()->data() << endl;
return prev;
void sort(node*& head_ptr, node*& marker_ptr)
node* print_ptr;
node* prev = previouse_minimum(head_ptr);
node* temp=NULL;
node* minum;
marker_ptr = head_ptr;
while(marker_ptr->link()->link()!= NULL)
minum = prev->link();
temp=minum->link();
prev->link()=temp;
minum->link()=head_ptr;
head_ptr=minum;
marker_ptr=minum->link();
prev=previouse_minimum(marker_ptr);
for(print_ptr = head_ptr; print_ptr !=NULL; print_ptr = print_ptr->link())
cout << print_ptr->data() << " ";
cout << endl;
【问题讨论】:
显然link()
是一个返回左值的方法,这意味着你不能给它分配任何东西。您没有显示node
的代码,但您应该使用底层变量进行赋值。
【参考方案1】:
prev->link()
和 minum->link()
是返回节点的函数。您不能为函数分配值/指针。要设置节点,您可以使用 void link(node* input)
之类的参数重载 link()
函数。
【讨论】:
以上是关于尝试对链表进行排序时出现左值错误的主要内容,如果未能解决你的问题,请参考以下文章