使用链式栈,实现十进制转八进制:键盘输入一个十进制数,经过链式栈的相关算法,输出八进制数

简介: 使用链式栈,实现十进制转八进制:键盘输入一个十进制数,经过链式栈的相关算法,输出八进制数

题目:

使用链式栈,实现十进制转八进制:键盘输入一个十进制数,经过链式栈的相关算法,输出八进制数。


代码:

#include <stdio.h>
//链式栈节点
typedef struct node
{
    //数据域
    int data;
    struct node *next;
} Node;
//链式栈管理结构体
typedef struct linkStack
{
    int size;
    Node *top;
} Linkstack;
//初始化空栈
Linkstack *Initstack()
{
    Linkstack *s = (Linkstack *)malloc(sizeof(Linkstack));
    if (s != NULL)
    {
        s->top = NULL;
        s->size = 0;
    }
    return s;
}
//判断栈是否为空
int ifNULL(Linkstack *s)
{
    if (s->size == 0)
        return 1;
    else return 0;
}
//取栈顶元素
int top(Linkstack *s, int *p)
{
    if (ifNULL(s))
        return 0;
    *p = s->top->data;
    return 1;
}
//出栈
int Pop(Linkstack *s)
{
    if (ifNULL(s))
        return 0;
    //取栈顶元素的地址
    Node *pm = s->top;
    //将原栈顶元素剔除出栈
    s->top = pm->next;
    //pm->next = NULL;
    //*p = pm->data;
    free(pm);
    return 1;
}
//入栈
int Push(Linkstack *s, int data)
{
    Node *new = (Node *)malloc(sizeof(Node));
    if (new != NULL)
    {
        new->data = data;
        new->next = s->top;
        s->top = new;
        s->size++;
        return 1;
    }  
}
int main()
{
    int a, tmp, data;
    Linkstack *s = Initstack();
    printf("输入十进制整数:");
    scanf("%d", &a);
    while (a)
    {
        tmp = a % 8;
        Push(s, tmp);
        a = a / 8;
    }
    printf("八进制数:");
    while(!ifNULL(s))
    {
        printf("%d", s->top->data);
        Pop(s); 
    }
    return 0;
}
相关文章
|
算法 Java
Map与Set高频面试算法题(只出现一次的数字,复制带随机指针的链表,宝石与石头,旧键盘,前k个高频单词)(Java实现)
给一个非空整数数组,只有一个元素出现了一次,剩余的元素都出现了两次,,请找出那个只出现一次的数字
Map与Set高频面试算法题(只出现一次的数字,复制带随机指针的链表,宝石与石头,旧键盘,前k个高频单词)(Java实现)
|
机器学习/深度学习 算法
算法:从键盘循环输入一个整数,判断是否是素数\质数
算法:从键盘循环输入一个整数,判断是否是素数\质数
|
算法 Java C#
【算法千题案例】每日LeetCode打卡——79.键盘行
📢前言 🌲原题样例:键盘行 🌻C#方法:排序遍历 🌻Java 方法:计数 💬总结
【算法千题案例】每日LeetCode打卡——79.键盘行
|
算法 数据可视化 语音技术
对用户建模:Minuum键盘背后的算法
当你开创一种新的键盘输入技术时,在交互设计以及后台算法方面,都有大量工作要做。你只需用一用,就能完全理解我们的键盘设计,而使得这种单行输入法可行的真实“魔力”在于驱动它的统计算法。I 如果你还没见过或用过Minuum键盘,简单说,这项设计就是把传统的键盘压缩成仅仅一行,使得只要环境允许,在任何地方使用单行输入法成为可能。
326 0
对用户建模:Minuum键盘背后的算法
|
算法
算法学习之路|旧键盘打字
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
1136 0
|
12天前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
110 3
|
17天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
6天前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
6天前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
17天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
119 14

热门文章

最新文章