第一种排序方法:只交换数据域值,不交换各节点顺序 以数据域为整型数据且链表带有头结点为例
ElemSN *fun(ElemSN*h)
{
int t;
ElemSN*p, *q;
for (p = h->next; p->next; p = p->next)
for (q = p->next; q; q = q->next)
{
if (p->datadata)
{
t = p->data;
p->data = q->data;
q->data = t;
}
}
return h;
}第二种排序方法:不交换数据域值,直接交换节点顺序,即指针域值
每次循环取出值最大的节点,建链
void fun(ElemSN*h)
{
ElemSN *p, *q, *mp, *mq, *head = NULL;
h = h->next;
while (h)
{
for (p = mp = h; p; q = p, p = p->next)
{
if (mp->data>p->data)
{
mp = p;
mq = q;
}
}
if (mp - h)
mq->next = mp->next;
else
h = h->next;
mp->next = head;
head = mp;
}
h->next = head;
}贴上来。。。不信我还能忘掉T^T
本文详细介绍了两种链表排序方法:一种是通过交换数据域实现排序;另一种是直接交换节点顺序进行排序。每种方法都附有具体代码实现,并通过实例演示了如何在链表中应用这些排序算法。
1059

被折叠的 条评论
为什么被折叠?



