链表排序


第一种排序方法只交换数据域值,不交换各节点顺序 以数据域为整型数据且链表带有头结点为例

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值