【发布时间】:2016-11-11 16:38:02
【问题描述】:
void NodeList::sortNodeAscending()
{
Node* swap = NULL;
Node* saveLink = NULL;
for(Node* firstPointer = head; firstPointer;firstPointer = firstPointer->next)
for(Node* secondPointer = firstPointer->next; secondPointer;secondPointer = secondPointer->next)
{
if((secondPointer->studentId)<(firstPointer->studentId))
{
swap =firstPointer;
saveLink = secondPointer->next;
firstPointer = secondPointer;
secondPointer = swap;
firstPointer->next = secondPointer;
secondPointer->next = saveLink;
}
}
}
这是我的排序代码,但我遇到的问题是排序后,所有值都是正确的,但头部没有改变或排序。
输出:{ 5, 0, 1, 2, 3, 4, 12, 15}
除第一个节点外,所有元素都已排序。
注意:我已经检查了下面链接中的问题,它与我的问题不同。 Sorting a Singly Linked List With Pointers
【问题讨论】:
-
查找您为
head分配新值的位置。 -
使用调试器和一小组数字找出
head指针发生变化的地方。 -
我无法在循环内更改头部,因为如果我这样做,头部将继续变化直到最后一次迭代,我只想在获得 smalles 值时更改一次。这就是我使用两个指针交换它们但仍然保存它们的值以便稍后我可以连接新交换的指针的原因。
标签: c++ sorting data-structures linked-list