小标
2019-04-01
来源 :
阅读 2732
评论 0
摘要:本文主要向大家介绍了C/C++知识点之利用栈实现进制转换,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之利用栈实现进制转换,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

#include<stdio.h>#include<malloc.h>#define MAX_STACK_SIZE 10//静态栈向量大小 #define ERROR 0#define OK 1typedef int ElemType;typedef int Status;/*
栈的应用:
进制转换
*/typedef struct sqstack{
ElemType stack_array[MAX_STACK_SIZE];// int size; int top; int bottom;
}SqStack;//初始化栈void Init_Stack(SqStack *S){
S->bottom=S->top=0; printf(""\n初始化栈成功!\n"");
}
//压栈(元素进栈) Status push(SqStack *S , ElemType e){ if(S->top >= MAX_STACK_SIZE - 1){ printf(""栈满!\n"");
return ERROR;//栈满
} printf(""--------""); printf(""当前入栈元素:%d\n"",e);
// printf(""入栈前S->top==%d\n"",S->top);
S->top++;//位置自加 // S->size++;// printf(""size==%d"",S->size); printf(""入栈后S->top==%d\n"",S->top);
S->stack_array[S->top] = e;//元素入栈 return OK;
} //弹栈(元素出栈) Status pop(SqStack *S , ElemType e){ if(S->top == 0){ return ERROR;//栈空
}
e = S->stack_array[S->top];//先取 printf(""当前应当出栈:%d\n"",e);
S->top--;//自减 // S->size--;// printf(""size==%d"",S->size); return OK;
}
//遍历栈Status StackTravel(SqStack *S){ int e; int ptr;
ptr = S->top; while(ptr > S->bottom){
e = S->stack_array[ptr];
ptr--; printf(""%d"",e);
}
}
void conversion(int n , int d){
SqStack S;//创建栈
ElemType k;//欲进栈的元素 int temp = n;//保存n
Init_Stack(&S);//初始化栈 // printf(""--入栈初始:S->top==%d\n"",S.top); while(n>0){
k = n % d;//取余
push(&S,k);//余数进栈
n = n / d;//结果取整
} printf(""将%d转化成%d进制后为:"",temp,d);
StackTravel(&S);//遍历栈 }int main(){
conversion(511, 2);
conversion(512, 2);
}本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
喜欢 | 0
不喜欢 | 1
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号