【问题标题】: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 的代码,但您应该使用底层变量进行赋值。

标签: c++ sorting linked-list lvalue


【解决方案1】:

prev-&gt;link()minum-&gt;link() 是返回节点的函数。您不能为函数分配值/指针。要设置节点,您可以使用 void link(node* input) 之类的参数重载 link() 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 2014-08-31
    • 2020-05-31
    • 2021-02-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多