【发布时间】:2013-08-22 16:48:33
【问题描述】:
我正在使用归并排序算法对链表进行排序
void node::merge_sort()
{
if (head == NULL || head->next == NULL)
{
return;
}
node *p = new node;
node *q = new node;
this->divide(&p, &q);
p->merge_sort();
q->merge_sort();
this=merge_lists(p, q);
}
但我必须更改此方法中的对象,因为我输入了this=merge_lists(p,q)。但这给出了一个错误,说 nolvalue。有没有其他办法?
divide函数用于将列表分成两部分,分别存放在p和q中。
【问题讨论】:
-
这里的指针真的有必要吗?即使是,
new也不是。 -
分配
this不起作用!将您的merge_sort()函数设计为静态类成员或在node类之外。 -
@chris 是的,他们需要存储两半的地址并在除法函数中更改它们
-
你真的把概念搞砸了。
node的head是什么?head是一个node。
标签: c++ algorithm mergesort singly-linked-list