给一个单链表内插一个值,输入12后,无法打印所所有结果解决方法

给一个单链表内插一个值,输入12后,无法打印所所有结果
好,
给一个单链表内插一个值,输入12后,无法打印所所有结果。

小白一个。看了一个课本,里面的东西和我写的差不了太多,不知为何不能通过。求大侠解救。

#include<stdio.h>
#include<stdlib.h>
 typedef struct NODE {
     struct NODE *link;
     int value;
}Node;

int
sll_insert(Node *current,int new_value)
{

 Node *previous;
 Node *new;

 while(current->value<new_value){
     previous=current;
     current=current->link;
     }

new=(Node *)malloc(sizeof(Node));

if (new==NULL) return 0;

new->link=current;
previous->link=&new;


}


main()
{


Node *p,*gc;
int new_value;

Node x={0,5};
Node y={0,10};
Node z={0,15};

x.link=&y;
y.link=&z;
p=&x;
gc=p;

int t=0;
while(t==0){
    printf("%d\n",gc->value);
    gc=gc->link;
    if (gc->link==NULL) {t=1;printf("%d\n",gc->value);}
    };


printf("请输入要插入的新值:");
scanf("%d",&new_value);

int sll_insert(Node *current,int new_value);
sll_insert(p,new_value);


t=0;
gc=&x;
while(t==0){
    printf("%d\n",gc->value);
    gc=gc->link;
    if (gc->link==NULL) {t=1;printf("%d\n",gc->value);}
    }


}

------解决方案--------------------
链表插入改成这样。

int sll_insert(Node *current, int new_value)
{

    Node *previous;
    Node *new;

    while(current->value < new_value)
    {
        previous = current;
        current = current->link;
    }

    new = (Node *)malloc(sizeof(Node));

    if (new == NULL) return 0;

    new->link = current;
new->value = new_value;
    previous->link = new;


}