各位,在C++单链表冒泡排序上有一个疑问
求助各位大虾,在C++单链表冒泡排序上有一个疑问
请问为什么交换节点的数据就可以达到冒泡排序的目的呢,我觉得交换了节点数据,但是地址没有变化啊,比如a有3个数据,其中一个数据和B的对调了,那么显示的时候不是会出错吗。
希望有耐心的朋友回答一下这个问题,谢谢
------解决方案--------------------
就像你说的,地址没有发生变化,只是那个地址保存的内容(即数据)发生了变化,以此达到排序的结果
- 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的对调了,那么显示的时候不是会出错吗。
希望有耐心的朋友回答一下这个问题,谢谢
------解决方案--------------------
就像你说的,地址没有发生变化,只是那个地址保存的内容(即数据)发生了变化,以此达到排序的结果