#include <stdio.h> #include <malloc.h> typedef int DataType; typedef struct node { DataType data; struct node *next; }LinkedNode, *LinkList; LinkList create_list() { DataType value[] = {1, 8, 3, 2, 5, 6, 9,4, 10, 7}; int len = sizeof(value) / sizeof(DataType); int i = 0; LinkedNode *list_head = NULL; LinkedNode *temp = NULL; LinkedNode *p = NULL; list_head = (LinkedNode*)malloc(sizeof(LinkedNode)); list_head->data = value[0]; list_head->next = NULL; temp = list_head; for(i = 1; i < len; i++) { while (temp->next != NULL) { temp = temp->next; } p = (LinkedNode*)malloc(sizeof(LinkedNode)); p->data = value[i]; p->next = NULL; temp->next = p; } return list_head; } void print(LinkList list) { LinkedNode *temp = NULL; if(list == NULL) return; temp = list; while(temp != NULL) { printf("%d ", temp->data); temp = temp->next; } printf("\n"); return; } void swap(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; } LinkList bubbleSortList(LinkList head) { if(head == NULL || head->next == NULL) return head; LinkedNode *p = NULL; char isChange = 1; while(p != head->next && isChange) { LinkedNode *q = head; isChange = 0;//标志当前这一轮中又没有发生元素交换,如果没有则表示数组已经有序 for(; q->next && q->next != p; q = q->next) { if(q->data > q->next->data) { swap(&q->data, &q->next->data); isChange = 1; } } p = q; } return head; } int main() { LinkList list = NULL; list = create_list(); print(list); bubbleSortList(list); printf("after sort:\n"); print(list); return 0;
}
转载请注明原文地址: https://www.6miu.com/read-24246.html