法一:修改指针指向
//法二
void maopao_link(link_p H){if(H==NULL){printf("头节点为空\n");return;}if(link_empty(H)){printf("链表为空\n");return;}link_p tail=NULL;while(H->next->next!=tail){link_p p=H;link_p q=H->next;while(q->next!=tail){if((q->data)>(q->next->data)){p->next=q->next;q->next=q->next->next;p->next->next=q;q=p->next;}q=q->next;p=p->next;}tail=q;//每轮循环确定一个最大的元素放在最后,然后就不用比了//每轮都可以少比一个}
}
法二:交换数值,不修改指针
void maopao_data(link_p H){if(H==NULL){printf("头节点为空\n");return;}if(link_empty(H)){printf("链表为空\n");return;}int temp;for(int i=0;i<H->len;i++){link_p p=H->next;for(int j=0;j<H->len-i;j++){if(p->data>p->next->data){temp=p->data;p->data=p->next->data;p->next->data=temp;}p=p->next;}}
}