早教吧 育儿知识 作业答案 考试题库 百科 知识分享

下列函数的功能是实现带头结点单链表按升值排序(填写空白处)voidsort(slink*11){slink*p,*q,*r,*s;p=11;while(p->next!=NULL){q=p->next;r=p;while(){if(q->next->datanext->data)r=q;;}if()

题目详情
下列函数的功能是实现带头结点单链表按升值排序(填写空白处)
void sort(slink *11)
{slink *p,*q,*r,*s;
p=11;
while(p->next!=NULL)
{q=p->next;
r=p;
while(____________)
{if (q->next->datanext->data)
r=q;
_____________;
}
if(_____________)
{s=r->next;
r->next=s->next;
s->next=p->next;
p->next=s;
}
_____________;
}
}
▼优质解答
答案和解析
1、要排序肯定要遍历列表,while(p->next!=NULL).所以
最后一句是循环语句:p=p->next;
2、 if(_____________)
{s=r->next;
r->next=s->next;
s->next=p->next;
p->next=s;
} 语句里面是交换节点s和p,题目要升序所以语句应该是判断节点s的值大于p即:
r->next->data > p->data
3、整个函数是对当前结点p,遍历结点后所有点早到后面所有点中最大的一个节点,然后和p比较
所以第一句是 q->next!=NULL
第二句是 q= q->next