首页 > 其他分享 >栈和队列1 顺序栈及基本操作实例(进制转换)

栈和队列1 顺序栈及基本操作实例(进制转换)

时间:2024-05-23 20:57:38浏览次数:20  
标签:进制 SqStack int top 栈及 基本操作 stacksize data void

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

#define INITSIZE 100
#define INCREAMENT 10 

typedef struct SqStack{
    int * data;
    int * top;
    int stacksize;
}SqStack;

void InitStack(SqStack * L){
    L -> data = (int *)malloc(INITSIZE * sizeof(int));
    if (!(L -> data)) exit(0);
    L -> top = L -> data;
    L -> stacksize = INITSIZE;
}

void Push(SqStack * L, int e){
    if (L -> top - L -> data >= L -> stacksize){
        L -> data = (int *)realloc(L -> data, (L -> stacksize + INCREAMENT) * sizeof(int));
        if (!(L -> data)) exit(0);
        L -> top = L -> data + L -> stacksize;
        L -> stacksize = L -> stacksize + INCREAMENT;
    }
    * L -> top ++ = e;
}

void Pop(SqStack * L, int * e){
    if (L -> top == L -> data) exit(0);
    * e = * -- L -> top;
}

void GetTop(SqStack L, int * e){
    if (L.top == L.data) exit(0);
    * e = * (L.top - 1);
}

void Conversion(int n){     //应用一:进制转换 
    SqStack L;
    InitStack(&L);
    int e;
    while (n != 0){
        Push (&L, n % 8);
        n = n / 8;
    }
    while (L.top != L.data){
        Pop (&L, &e);
        printf("%d", e);
    }
}

int main(){
    int n;
    scanf("%d", &n);
    Conversion(n);
    return 0;
}

标签:进制,SqStack,int,top,栈及,基本操作,stacksize,data,void
From: https://blog.csdn.net/l1784312/article/details/139157535

相关文章

  • 二进制数组与基础类型转换
    ///<summary>///工具类:对象与二进制流间的转换///</summary>classByteConvertHelper{///<summary>///将对象转换为byte数组///</summary>///<paramname="obj">被转换对象</param>///......
  • 二进制安装mysql5.7
    1.创建目录mkdir-p/server/toolsmkdir/applicationmkdir/mysql-data/mysql/data-p2.建用户与环境变量useradd-s/sbin/nologinmysqlecho"exportPATH=/application/mysql/bin:$PATH">>/etc/profilesource/etc/profile3.下载与解压文件cd/server/tools/wg......
  • C# 进制转换帮助类
    publicstaticclassNumericHelper{//将十进制数转换为二进制字符串publicstaticstringDecimalToBinary(intnumber){returnConvert.ToString(number,2);}//将十进制数转换为八进制字符串publicstaticstringDecimalToOctal(intnumber){returnConvert.T......
  • 字节流与十六进制字符串的相互转化
    usingDigest=std::vector<unsignedchar>;std::stringdigestToHex(constDigest&bytes,std::size_tlength){ staticconstchardigits[]="0123456789abcdef"; conststd::size_tfullLen=bytes.size()*2; std::size_tlen=length?l......
  • P8764 [蓝桥杯 2021 国 BC] 二进制问题
    P8764[蓝桥杯2021国BC]二进制问题一、问题简析本题采用数位dp求解。令\(f[i][j]=\)在\(i\)位二进制中,有\(j\)个\(1\),共有几个数。(相当于求组合数)由于数据范围为\(1\leN\le10^{18}\),最大二进制位数设置为70,防止溢出。预处理组合数for(inti=0;i<MAX;+......
  • [20240516]建立任意进制转10进制脚本xto10.sql脚本.txt
    [20240516]建立任意进制转10进制脚本xto10.sql脚本.txt--//bashshell64进制编码从0开始.0-9,a-z,A-Z.这样仅仅62个编码.还剩下2个.@_--//这样完整的编码如下:$base64=$(echo{0..9}{a..z}{A..Z}@_)$echo$base640123456789abcdefghijklmnop......
  • [20240518]任意进制转换xtoy.sql脚本.txt
    [20240518]任意进制转换xtoy.sql脚本.txt--//前几天尝试改进10进制转任意进制,以及其他进制转10进制脚本,有了这两个脚本就可以通过10进制实现任意进制的转换.$cat10tox.sqlsettermoffcolumn2new_value2selectnull"2"fromdualwhere1=2;selectnvl('&2',16)"2"from......
  • [20240511]建立10进制转任意进制10tox.sql脚本.txt
    [20240511]建立10进制转任意进制10tox.sql脚本.txt--//翻开以前笔记,找到1个脚本10x.sql(改名10tox.sql),可以实现10进制转任意进制.受字符集限制最大64进制.--//bashshell64进制编码从0开始.0-9,a-z,A-Z.这样仅仅62个编码.还剩下2个.@_,以该编码为基础来实现--//bashshel......
  • 二进制拆位
    二进制拆位题意:给定一个数组,求所有子区间的区间异或和的sumSol:先做异或前缀和,原问题则变成求数组中任意两个数的异或,然后全部相加起来的结果。我们考虑每个元素每位的贡献,只需要统计前面(偏序计数)有多少个数的本位与自己不同。//这个题目显然应该作为模板题,似乎没有找到直白的在......
  • Emacs基本操作
    Emacs常用命令0.寻求帮助1)C-h:寻求帮助,在输入C-h后,输入需要了解的按键,即会弹出对应按键的功能说明。2)C-g:中止操作,例如在意欲输入C-xk过程中,突然想放弃,但已经输入了C-x,想放弃执行,此时按C-g即可中断操作。3)C-xC-c:退出emacs。1.文件操作1)C-xC-f:打开文件2)C-xC-s:保存3)C-x......