链表排序之冒泡法---简易篇

来源:互联网 发布:卖淘宝小号的网站 编辑:程序博客网 时间:2024/05/20 01:39

                                                                                         链表排序之冒泡法---简易篇

 struct worker *p1,*p2;  //定义两个结构体指针

 for(p1=head->next;p1!=NULL;p1=p1->next)  //p1指向第一个节点,判断不等于空时,循环指向下一个节点。

 {

         for(p2=p1->next;p2!=NULL;p2=p2->next)  //p2指向第二个节点,判断不等于空,依次循环

          {

                   if(p1->num>p2->num)  //判断如果第一个节点的数大于第二个节点

                    {

                              t=*p1;

                   *p1=*p2;

                   *p2=t;      //交换两个节点的位置

                    t.next=p1->next;

                    p1->next=p2->next;

                    p2->next=t.next;  //节点位置换过之后,结构体中的next指针也交换了,但他们原来的指向没变,所以要将他们的指向换回来

                    }

            }

}

这个方法最核心的代码就是t.next=p1->next;p1->next=p2->next;p2->next=t.next;  ,因为交换完了节点,要把节点中的next指针指向交换回来,才能使链表重新连接起来。。。

0 0
原创粉丝点击