各位高手帮忙解释动态链表中的冒号排序函数!!!

cy729314265 2010-06-06 05:27:04
//冒泡排序
void sort(node* head)
{
node *pre,*p1,*p2;
node *tail=0;

int nLen=0;//链表长度
p1=head;
while(p1)
{
nLen++;
p1=p1-> next;
}

if(nLen==0 || nLen==1)return;
p1=head;p2=p1-> next;
//对nLen长的链表,执行nLen-1次冒泡
for(int i=1;i <nLen;++i)
{
while(p2!=tail)
{
//交换
if(p1-> data > p2-> data)
{
if(p1==head){
p1-> next=p2-> next;
p2-> next=p1;
pre=p2;
p1=pre-> next;p2=p1-> next;
}
else
{
pre-> next=p2;
p1-> next=p2-> next;
p2-> next=p1;
p1=pre-> next;p2=p1-> next;
}
}
pre=p1;p1=p1-> next;p2=p2-> next;
}
//一趟排序完毕,tail指向已排好序部分的第一个
tail=p1;p1=head;p2=p1-> next;
}
}

各位高手帮忙解释动态链表中的冒号排序函数!!!!要每一句都解释哦!!!谢谢!!
...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangchentangjuan 2010-06-07
  • 打赏
  • 举报
回复
间而言之:这跟链表不链表没有关系吧 汗
liutengfeigo 2010-06-06
  • 打赏
  • 举报
回复
这个。。。。。还是比较难啊。
chaoliu1024 2010-06-06
  • 打赏
  • 举报
回复
void sort(node* head)  
{
node *pre,*p1,*p2; //定义节点指针
node *tail=0;

int nLen=0;//链表长度
p1=head; // 把头节点给p1
while(p1) // 只要有p1没有结束就循环
{
nLen++; // 长度加1
p1=p1-> next; // p1指向下一个元素
}

if(nLen==0 || nLen==1)
return; // 如果链表长度等于0或1就结束程序
p1=head;p2=p1-> next; //p1指向头结点、p1下一个节点给p2

for(int i=1;i <nLen;++i) //对nLen长的链表,执行nLen-1次冒泡
{
while(p2!=tail) // 当p2没有指向链表尾部就循环
{
//交换
if(p1-> data > p2-> data) // 如果p1指向的元素大于p2指向的元素
{
if(p1==head){ // 如果p1是链表的头
p1-> next=p2-> next; // p2的下一个给p1的下一个
p2-> next=p1; // p1给p2的下一个
pre=p2; // p2给pre
p1=pre-> next; // pre下一个给p1
p2=p1-> next; // p1下一个给p2 这里画个图就能看清楚了!!!
}
else // 如果p1不是链表的头,内容基本同上!画图能看清楚
{
pre-> next=p2;
p1-> next=p2-> next;
p2-> next=p1;
p1=pre-> next;p2=p1-> next;
}
}
// 如果p1指向的元素不大于p2指向的元素
pre=p1; // p1赋个pre
p1=p1-> next; // p1下一个元素
p2=p2-> next; // p2下一个元素
}
//一趟排序完毕,tail指向已排好序部分的第一个
tail=p1;p1=head;p2=p1-> next;
}
}
liutengfeigo 2010-06-06
  • 打赏
  • 举报
回复
我不会,帮顶,正好学习学习

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧