数据结构实验题,试图用单链表解决失败,求指导

输入一个正整数num(大于0且在int范围内),再输入一个N(2<=N<=36)表示要转换成多少进制
输出转换结果




#include<stdio.h>
#include<stdlib.h>
#define ElemType char
typedef struct Lnode
{
    ElemType data;
    struct Lnode* next;
}Lnode;
typedef Lnode* Linklist;

Linklist Create_L(int num,int n)
{
    Linklist L;
    Linklist p;
    L=(Linklist)malloc(sizeof(Lnode));
    L->next=NULL;
    int i;
    int r=num%n;
    int s=num/n;
    char q='A';
    while(s!=0)
    {
    if(r>=10)        q=q+r-10;
    else             q=r;
    while(q)
    {
        p=(Linklist)malloc(sizeof(Lnode));
        p->data=q;
        p->next=L->next;
        L->next=p;
    }
    r=s/r;
    s=s/n;
    }
    return L;
}
Linklist Printl(Linklist L)
{

    Linklist p;
    p = L->next;
    while(p!=NULL)
    {
        printf("%c ",p->data);
        p = p->next;
    }
    return L;
}
int main()
{
    Linklist L1;
    int num,n;
    scanf("%d %d",&num,&n);
    L1=Create_L(num,n);    
    Printl(L1);
    return 0;
}

修改见注释处,供参考:

#include<stdio.h>
#include<stdlib.h>
#define ElemType char
typedef struct Lnode
{
    ElemType data;
    struct Lnode* next;
}Lnode;
typedef Lnode* Linklist;
Linklist Create_L(int num,int n)
{
    Linklist L;
    Linklist p;
    L=(Linklist)malloc(sizeof(Lnode));
    L->next=NULL;
              //int i;
    int r;    //=num%n;
    int s=num;///n;
    char q;
    while(s!=0)
    {
         r=s%n;
         s=s/n;
         if(r>=10) q='A'+r-10;//q=q+r-10;
         else      q=r+'0';   // q=r;
         //while(q)
         //{
         p=(Linklist)malloc(sizeof(Lnode));
         p->data=q;
         p->next=L->next;
         L->next=p;
         //}

    }
    return L;
}
void Printl(Linklist L)//Linklist Printl(Linklist L)
{
    Linklist p;
    p = L->next;
    while(p!=NULL)
    {
        printf("%c",p->data);
        p = p->next;
    }
                      //return L;
}
int main()
{
    Linklist L1;
    int num,n;
    scanf("%d %d",&num,&n);
    L1=Create_L(num,n);    
    Printl(L1);
    
    return 0;
}