【数据结构】数制转换(简单版)

⭐️写在前面的话⭐️

📒博客主页: 程序员好冰
🎉欢迎 【点赞👍 关注🔎 收藏⭐️ 留言📝】
📌本文由 程序员好冰 原创,CSDN 首发!
📆入站时间: 🌴2022 年 07 月 13 日🌴
✉️ 是非不入松风耳,花落花开只读书。
💭推荐书籍:📚《Java编程思想》,📚《Java 核心技术卷》
💬参考在线编程网站:🌐牛客网🌐力扣
🍭 作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!🍭


数制转换(简单版)

#include <stdio.h>
#include <stdlib.h>

//进制转换
/*功能:输入一个大于0的十进制数整数以及需要转换的进制n*/

#define OK 1
#define ERROR -1

typedef int ElemType;
typedef int Status;

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode;

typedef struct LinkStack
{
    LNode *top;
    int count;
}LinkStack;

Status InitStack(LinkStack *L)
{
    L->top = (LNode*)malloc(sizeof(LNode));
    if(!L->top){
        return ERROR;
    }
    L->top=NULL;
    L->count=0;
    return OK;
}

Status StackIsEmpty(LinkStack L)
{
    if(L.top==NULL){
        return OK;
    }
    if(L.top!=NULL){
        return ERROR;
    }
    return OK;
}

/*压栈,需要传一个数据值,形参*/
Status Push(LinkStack *L,ElemType e)
{
    LNode *s=(LNode*)malloc(sizeof(LNode));
    s->data=e;
    s->next=L->top;
    L->top=s;
    L->count++;
    return OK;
}

/*弹栈,需要传出一个数据值,引用传递*/
Status Pop(LinkStack *L,ElemType *e)
{
    if(L->top==NULL){
        return ERROR;
    }
    *e=L->top->data;
    LNode *temp;
    temp=L->top;
    L->top=L->top->next;
    free(temp);
    L->count--;
    return OK;
}

Status PrintStack(LinkStack L)
{
    if(L.top==NULL){
        return ERROR;
    }
    while(L.top){
        printf("%d",L.top->data);
        L.top=L.top->next;
    }
    printf("\n");
    return OK;
}

Status Num_Sys_Conver(int m,int n)
{
    LinkStack L;
    InitStack(&L);
    ElemType d;//要入栈的值
    while(m!=0){
        d=m%n;
        Push(&L,d);
        m=m/n;
    }
    PrintStack(L);
    return OK;
}

int main()
{
    printf("链栈创建成功,请继续操作.\n");
    int m,n;
    while(1){
        printf("\n==========================\n");
        printf("栈应用之数制转换.\n");
        printf("请输入一个大于0的十进制数整数和需要转换的进制N(m,n):");
        scanf("%d,%d",&m,&n);
        Num_Sys_Conver(m,n);
        printf("==========================\n");
    }
    return 0;
}

运行效果

image-20230410173053902


🚀先看后赞,养成习惯!🚀

🚀 先看后赞,养成习惯!🚀

🎈觉得文章写得不错的老铁们,点赞评论关注走一波!谢谢啦!🎈


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值