楼主的思路是对的。不能直接对数组用动态定义,但是可以对指针使用。所以动态定义一个指针,把它当成数组用。我把你的程序做了些简单的修改,运行成功。

printf("请输入要排序数字的个数:\n");
printf("请输入%d个数(数字之间用空格或回车隔开):\n",length);
Creat(void)/*创建链表,结束标志为当输入的数据为0!*/
SL)/*递增排序函数:入口参数:链表的头指针,此为链表中的排序函数*/
printf("初始化的单链表数据序列为:\n");
printf("\n按递增顺序排序后的序列为:\n");
可以从以下三个步骤入手:排序算法选择、链表遍历和值交换1.使用排序算法对链表的数进行排序是可行的。2.因为链表的结构可以通过指针进行值交换,并且链表的值是动态增加和减少的。常用的排序算法有快排、冒泡排序、插入排序等等,需要根据实际情况进行选择。3.在实现排序的时候,需要遍历链表,然后通过值的比较来判断是否需要进行值交换。在链表操作中,最好将头和尾都保存下来,循环链表可以使用双向链表,提高操作效率。