有序单链表的节点内元素排序:
//链表排序 void pop_sort(DataNode *head) //链表冒泡排序,节点交换法(还有换值法);传入头节点指针 { //排序中没有修改头节点指针值,只是修改指针内容head->next的值 DataNode *pre,*p,*tail,*temp; tail=NULL; pre=head; while((head->next->next)!=tail)//(head->next)!=tail同样适用 ,多执行最后一个步比较 { p=head->next; pre=head; while(p->next!=tail) { if((p->num)>(p->next->num)) { /* pre->next=p->next; //交换节点方法一 p->next = p->next->next; pre->next->next = p; p = pre->next; */ pre->next=p->next; //交换节点方法二 temp=p->next->next; p->next->next=p; p->next=temp; p=pre->next; //p回退一个节点 } p=p->next; //p再前进一个节点 pre=pre->next; } tail=p; } }