美文网首页
栈应用之数制转换

栈应用之数制转换

作者: obidv | 来源:发表于2018-09-01 16:48 被阅读0次

头文件:

stackdef.h
#pragma once
//基本定义
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2

typedef int status;

#define init_size 100//预设量
#define increment 10//增量

typedef int selemtype;//设置元素类型

typedef struct {//栈结构
    selemtype *base;
    selemtype *top;
    int stacksize;
}sqstack;

//函数声明
status InitStack(sqstack &s);
status Push(sqstack &s, selemtype e);
status Pop(sqstack &s,selemtype &e);
status StackeEmpty(sqstack s);
status GetTop(sqstack s, selemtype &e);

cpp文件:

StackOperation.cpp
#include <stdio.h>
#include <stdlib.h>
#include "stackdef.h"






//----------函数定义
//-----------初始化栈----------//
status InitStack(sqstack &s) {
    s.base = (selemtype *)malloc(init_size * sizeof(selemtype));
    if (!s.base) exit(overflow);
    s.top = s.base;
    s.stacksize = init_size;
    return ok;
}

//--------栈顶加入元素--------//
status Push(sqstack &s, selemtype e) {
    if (s.top - s.base >= s.stacksize) {
        s.base = (selemtype *)realloc(s.base, (s.stacksize + increment) * sizeof(selemtype));
        s.top = s.base + s.stacksize;
        s.stacksize += increment;
    }
    *s.top++ = e;
    return ok;
}

//-----------栈顶指针下移--------//
status Pop(sqstack &s,selemtype &e) {
    if (s.base == s.top) return error;
    e=*--s.top;

    return ok;
}

//----------判断是否为空栈---------//
status StackeEmpty(sqstack s) {
    if (s.base == s.top) return true;
    else return false;
}

//---------获得栈顶元素-------//
status GetTop(sqstack s, selemtype &e) {
    if (s.top == s.base) return error;
    e = *(s.top - 1);
    return ok;
}
Conversion.cpp
#include <stdio.h>
#include "stackdef.h"
#include <stdlib.h>

//---------函数声明
void Conversion();
//对于输入的任意一个非负十进制整数,打印输出与其等值的二进制数

//----------主函数
int main() {
    Conversion();
    return 0;
}


//----------函数定义
void Conversion() {
    sqstack s;
    int n,e;
    InitStack(s);
    scanf("%d", &n);
    while (n) {
        Push(s, n % 2);
        n = n / 2;
    }
    while (!StackeEmpty(s)) {
        Pop(s,e);
        printf("%d", e);
    }
}

相关文章

  • 栈应用之数制转换

    头文件: cpp文件:

  • 数据结构学习 | 队列和栈

    栈 后进先出 栈顶允许插入(压栈)、删除(弹栈) 应用:数制转换数制转换与栈 队列 先进先出 队列头部允许删除,队...

  • 栈应用:数制转换

    GitHub: https://github.com/BadWaka/data-structure-algorit...

  • JavaScript描述数据结构之栈

    栈 特点:先进后出 栈的实现 使用栈的实例 数制间的转换 将数值n转换为以b为基数的数字,实现转换的算法思路:(1...

  • 数据结构复习

    第三章 栈和队列 一 栈 栈的类型 顺序栈 链式栈 双向栈 栈的应用 数制转换 行编辑程序 迷宫求解 表达式求值:...

  • 数据结构总结

    严蔚敏版总结 一.线性表 数组形式 链表形式 二.栈和队列 1.顺序栈 2.栈的应用 ①数制转换 ②括号匹配 ...

  • 如何用数组来实现栈和队列

    Stack 栈是一种后入先出的数据结构,仅限定在栈顶进行插入和删除操作。栈结构的实际应用主要有数制转换、括号匹配、...

  • 第一章出题

    数制的转换(我们经常做整数的数制转换,对小数的数制转换可能有点儿陌生。) 23.125的二进制为() 答案:1...

  • 数制转换

  • 数制转换

    逻辑运算 异或 相同为0 不同为1 转换 十六进制转换二进制 -自右向左 四位一组 不足补0 二进制转换八进制 整...

网友评论

      本文标题:栈应用之数制转换

      本文链接:https://www.haomeiwen.com/subject/easuwftx.html