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

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

题目:

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


代码:

#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键盘,简单说,这项设计就是把传统的键盘压缩成仅仅一行,使得只要环境允许,在任何地方使用单行输入法成为可能。
174 0
对用户建模:Minuum键盘背后的算法
|
算法
算法学习之路|旧键盘打字
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
1032 0
|
3天前
|
机器学习/深度学习 自然语言处理 算法
m基于深度学习的OFDM+QPSK链路信道估计和均衡算法误码率matlab仿真,对比LS,MMSE及LMMSE传统算法
**摘要:** 升级版MATLAB仿真对比了深度学习与LS、MMSE、LMMSE的OFDM信道估计算法,新增自动样本生成、复杂度分析及抗频偏性能评估。深度学习在无线通信中,尤其在OFDM的信道估计问题上展现潜力,解决了传统方法的局限。程序涉及信道估计器设计,深度学习模型通过学习导频信息估计信道响应,适应频域变化。核心代码展示了信号处理流程,包括编码、调制、信道模拟、降噪、信道估计和解调。
23 8
|
5天前
|
算法
基于GA遗传优化的混合发电系统优化配置算法matlab仿真
**摘要:** 该研究利用遗传算法(GA)对混合发电系统进行优化配置,旨在最小化风能、太阳能及电池储能的成本并提升系统性能。MATLAB 2022a用于实现这一算法。仿真结果展示了一系列图表,包括总成本随代数变化、最佳适应度随代数变化,以及不同数据的分布情况,如负荷、风速、太阳辐射、弃电、缺电和电池状态等。此外,代码示例展示了如何运用GA求解,并绘制了发电单元的功率输出和年变化。该系统原理基于GA的自然选择和遗传原理,通过染色体编码、初始种群生成、适应度函数、选择、交叉和变异操作来寻找最优容量配置,以平衡成本、效率和可靠性。
|
6天前
|
机器学习/深度学习 算法
基于鲸鱼优化的knn分类特征选择算法matlab仿真
**基于WOA的KNN特征选择算法摘要** 该研究提出了一种融合鲸鱼优化算法(WOA)与K近邻(KNN)分类器的特征选择方法,旨在提升KNN的分类精度。在MATLAB2022a中实现,WOA负责优化特征子集,通过模拟鲸鱼捕食行为的螺旋式和包围策略搜索最佳特征。KNN则用于评估特征子集的性能。算法流程包括WOA参数初始化、特征二进制编码、适应度函数定义(以分类准确率为基准)、WOA迭代搜索及最优解输出。该方法有效地结合了启发式搜索与机器学习,优化特征选择,提高分类性能。
|
1天前
|
机器学习/深度学习 存储 算法
基于SFLA算法的神经网络优化matlab仿真
**摘要:** 使用MATLAB2022a,基于SFLA算法优化神经网络,降低训练误差。程序创建12个神经元的前馈网络,训练后计算性能。SFLA算法寻找最优权重和偏置,更新网络并展示训练与测试集的预测效果,以及误差对比。SFLA融合蛙跳与遗传算法,通过迭代和局部全局搜索改善网络性能。通过调整算法参数和与其他优化算法结合,可进一步提升模型预测精度。
|
6天前
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的64QAM解调算法matlab性能仿真
**算法预览图省略** MATLAB 2022A版中,运用BP神经网络进行64QAM解调。64QAM通过6比特映射至64复数符号,提高数据速率。BP网络作为非线性解调器,学习失真信号到比特的映射,对抗信道噪声和多径效应。网络在处理非线性失真和复杂情况时展现高适应性和鲁棒性。核心代码部分未显示。