【发布时间】:2021-03-19 05:12:51
【问题描述】:
试图找出如何对链表进行排序,方法是找到最大的整数,删除它并将其放在开头。所以我写了一个函数来找到最大的并将它放在列表的开头。我测试了它并且它有效。就是这样。
NodePtr
getBiggest(NodePtr top)
{
int big;
NodePtr max, prev, before, head = top;
big = head->num;
while (head->next != NULL) {
prev = head;
head = head->next;
if (big < head->num) {
big = head->num;
max = head;
before = prev;
}
}
before->next = max->next;
max->next = top;
top = max;
return top;
}
然后我编写了一个函数来对列表进行排序。这个没有按预期工作。我是编码新手,我只需要一些灵感。我正在尝试,但没有成功。
NodePtr
sortList(NodePtr top)
{
NodePtr getBiggest(NodePtr);
NodePtr head = top, prev, rp, curr;
rp = getBiggest(head);
prev = rp;
curr = rp->next;
while (curr != NULL) {
prev->next = getBiggest(curr);
prev = curr;
curr = curr->next;
}
return rp;
}
【问题讨论】:
标签: c sorting singly-linked-list selection-sort function-definition