单链表冒牌排序
时间:2010-12-07 来源:linyilong
#include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }; struct node *create_list(int a[],int len) { struct node *phead; struct node *ptr; struct node *pre; phead=(struct node *)malloc(sizeof(struct node)); int i=0; phead->data=a[i]; phead->next=NULL; ptr=phead->next; pre=phead; for(i=1;i<len;i++) { ptr=(struct node *)malloc(sizeof(struct node)); ptr->data=a[i]; ptr->next=NULL; pre->next=ptr; ptr=ptr->next; pre=pre->next; } return phead; } void print_list(struct node *phead) { struct node *ptr=phead; while(ptr != NULL) { printf("%d ",ptr->data); ptr=ptr->next; } printf("\n"); } 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; } int main() { int a[10]={ 5,3,6,8,9,6,5,4,2,7 }; struct node *phead; phead=create_list(a,10); print_list(phead); phead=bubble(phead,10); print_list(phead); }
相关阅读 更多 +