链表的排序代码 c语言,C语言的源代码 l链表排序

d3211d2a4bd072692dab716d10bbb5dc.png

typedef struct node

{

int data;

struct node *next;

}*Linklist,Node;

void paixu(Linklist head)

{

Linklist p,q,small;

int temp;

for(p=head->next;p->next!=NULL;p=p->next) /* for(循环变量初值,循环条件,循环变量增量)*/

{ small=p;

//*****起始时设置small与首元数据一致;

for(q=p->next;q;q=q->next) /* q作为条件,是何用意?*/

//*****以q为指针,从链表次元结点遍历到尾。

if(q->datadata)

small=q; /*执行这句之后又回到for(q=p->next;q;q=q->next)?还是到下一个if?*/

//*****先将q指向后一结点,再回到循环判断语句,条件

//*****满足则在进循环体(if语句是循环体)

if(small!=p) /*不懂这个if所有的内容*/

//*****如果找到的表中最小元不是p结点,则交换p结点和small结点的元素

//*****所以下面语句少一个small->data=temp;

{

temp=p->data;

p->data=small->data;

small->data=temp;//*****加上语句

}

}//******这里要加一个大括号

printf("输出排序后的数字:\n");

output(head);

}

有谁能详细分析这个算法?

给出第一次循环和第二次循环的详解?

//*****这里有嵌套循环

//*****你说的是外层的循环吧?

//*****例如初始序列为3451209

//****1次循环后0451239

//****2次循环后0154239

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值