#include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node* next; }Node,*List; void CreateList(List L, int k) { Node* node; Node* p; //尾插法创建链表 p=L; for(int i=0;i<k;i++) { node=(Node*)malloc(sizeof(Node)); scanf("%d",&node->data); p->next=node; p=node; } node->next=NULL; } //输出链表值 void Print(List L) { Node* node; node=L->next; while(node) { printf("%d ",node->data); node=node->next; } printf("\n"); } void Swap(int& a, int& b) { int temp; temp=a; a=b; b=temp; //测试 //printf("\n%d %d",a,b); } //对数组实现冒泡排序 void BubbleSort(int* arr, int k) { for(int i=0;i<k-1;i++)//排序次数 for(int j=0;j<k-i-1;j++)//比较次数 if(arr[j]>arr[j+1]) { Swap(arr[j],arr[j+1]); } } int main() { List L=(List)malloc(sizeof(Node)); L->next=NULL; CreateList(L,5); Print(L); //利用数组对链表进行由小到大排序 int arr[1024]; int i=0; //存储链表中的数据 Node* node=L->next; Node* node2=L->next; while(node) { arr[i]=node->data; i++; node=node->next; } printf("一共有%d个数据\n",i); /*测试 int a=1,b=2; Swap(a,b); BubbleSort(arr,5); for(int j=0;j<5;j++) printf("%d\n",arr[j]); */ //给链表重新赋值 BubbleSort(arr,i); for(int k=0;k<i;k++) { node2->data=arr[k]; node2=node2->next; } Print(L); return 0; }