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
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试