链表的建立和输出,该如何处理

链表的建立和输出
如题,代码如下,
C/C++ code
#include "stdio.h"
#include "malloc.h"
typedef struct link
{
    int Element;
    struct link *next;
}Linklist;
void Create(Linklist *L,int a[],int n)
{
    Linklist *s;
    int i;
    L = (Linklist *)malloc(sizeof(Linklist));
    L->next = NULL;
    for(i = 0;i<n;i++)
    {
        s = (Linklist *)malloc(sizeof(Linklist));
        s->Element = a[i];
        s->next = L->next;
        L->next = s;
    }
}

void print(Linklist *L)
{
    Linklist *s = L->next;
    while(s!=NULL)
    {
        printf("%d",s->Element);
        s = s->next;
    }
}

int main()
{
   Linklist *L;
   int Element[5];
   int j;
   for(j = 0;j < 5;j++)
   {
       scanf("%d",&Element[j]);
   }
   Create(L,Element,5);
   print(L);
}

我知道是指针的问题,输不出链表。但是能力不足,求高人指点,

------解决方案--------------------
修改如下:

C/C++ code

Linklist* Create(Linklist *L,int a[],int n)
{
    Linklist *s, *tmp;
    int i;
    L = (Linklist *)malloc(sizeof(Linklist));
    L->next = NULL;
    tmp = L;
    for(i = 0;i<n;i++)
    {
        s = (Linklist *)malloc(sizeof(Linklist));
        s->Element = a[i];
        s->next = tmp->next;
        tmp->next = s;
        tmp = tmp->next;
    }
    
    return L;
}

另外:main函数中得调用也需要修改一下:
L = Create(L,Element,5);

------解决方案--------------------
看下我写的这个哦。仔细阅读下就好了。其实就是指针作为参数传递的问题。
http://topic.****.net/u/20120319/15/0751ad00-bad3-481b-9f3a-fed7409cb9cc.html