直接上代码:
#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;
}
print_list(phead);
}
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);
}