读书人

各位在C++单链表冒泡排序上有一个疑

发布时间: 2012-02-21 16:26:23 作者: rapoo

求助各位大虾,在C++单链表冒泡排序上有一个疑问

C/C++ code
struct node *bubble(struct node *phead,int len){    struct node *ptr,*next;    int temp;         for(int i=0;i<len;i++)    {        ptr=phead;        next=ptr->next;        for(int j=len-i-1;j>0;j--)        {            if(ptr->data > next->data)            {                temp=ptr->data;                ptr->data=next->data;                next->data=temp;            }            ptr=ptr->next;            next=next->next;        }    }         return phead;}


请问为什么交换节点的数据就可以达到冒泡排序的目的呢,我觉得交换了节点数据,但是地址没有变化啊,比如a有3个数据,其中一个数据和B的对调了,那么显示的时候不是会出错吗。
希望有耐心的朋友回答一下这个问题,谢谢

[解决办法]
就像你说的,地址没有发生变化,只是那个地址保存的内容(即数据)发生了变化,以此达到排序的结果

读书人网 >C++

热点推荐