#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;
}

 利用数组对链表进行排序_#include