#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<math.h>
#include <windows.h>
#define maxsize 20
#define Elemtype char
typedef struct {
Elemtype *top;
Elemtype *bottom;
int stack_size;
}stack;
void initial_stack(stack *s){
s->bottom=(Elemtype*)malloc(maxsize*sizeof(Elemtype));
if(!s->bottom){
printf("error");
exit(-1);
}
s->top=s->bottom;
s->stack_size=maxsize;
}
void push(stack *s,Elemtype *e){
if(s->top-s->bottom>=s->stack_size){
s->stack_size+=maxsize;
s->bottom=(Elemtype *)realloc(s->bottom,(s->stack_size+maxsize));
}
if(!s->bottom){
exit(0);
}
*(s->top)=*e;
s->top++;
}
void pop(stack *s,Elemtype *e){
if(s->top==s->bottom){
printf("栈空!\n");
}
else
{
*e=*--(s->top);
}
}
int stack_len(stack s){
return (s.top-s.bottom);
}
int main(){
stack s;
Elemtype c;
int len,i;
int sum=0;
printf("请输入二进制数\n");
initial_stack(&s);
scanf("%c",&c);
while(c!='#'){
push(&s,&c);
scanf("%c",&c);
}
getchar();//去掉回车
len=stack_len(s);
printf("\n栈的当前容量是%d\n",len);
for(i=0;i<len;i++){
pop(&s,&c);
sum=sum+(c-48)*pow(2,i);
}
printf("\n二进制数转化为十进制:%d",sum);
return 0;
}
c语言进制转换 栈的操作
最新推荐文章于 2021-11-05 11:00:17 发布