兰秋葭月
2021-09-16 00:50
采纳率: 100%
浏览 23

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

输入一个正整数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;
}

  • 收藏

1条回答 默认 最新

  • qzjhjxj 2021-09-16 01:57
    已采纳

    修改见注释处,供参考:

    #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;
    }
    
    
    1 打赏 评论

相关推荐 更多相似问题