兰秋葭月 2021-09-16 00:50 采纳率: 85.7%
浏览 30
已结题

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

输入一个正整数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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办