首先我们先定义好一个节点
struct node
{
    int val;
    node * next;
    node(int x):val(x),next(nullptr){};
};
创建一个 插入的函数,当node ->val  <x时 ,直接插入;当node ->val >x 时交换 node ->val 与 x 的值后再插入
void insertnode(node *&root, int x)
{
    //if the list is null ,add the head root 
    if(root == nullptr )
    {
        root = new node(x);
        return;
    }
    //
    if (root->val <= x )
    {
        insertnode(root->next ,x );
    }else{
        int tmp = root->val;
        root->val = x ;
        insertnode(root->next,tmp);
    }
}
这样的话,在插入时就完成了排序的任务,主函数就是读取数据和 输出结果了
int main()
{
    int n ;
    while(cin >n)
    {
        int x =0 ;
        node *root = nullptr ;
        for(int i = 0;i< n;i++)
        {
          cin >> x;
          insertnode(root ,x );
        }
        for(root)
        {
            cout << root->val<<" ";
            root = root->next;
        }
        cout << endl;
    }
    return 0;
}