c语言进制转换 栈的操作

简介: c语言进制转换 栈的操作
#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;
} 
相关文章
|
16天前
|
C语言
链栈的初始化以及用C语言表示进栈、出栈和判断栈空
链栈的初始化以及用C语言表示进栈、出栈和判断栈空
18 3
|
2月前
|
Linux C语言
Linux系统下C语言的队列操作
Linux系统下C语言的队列操作
28 0
|
2月前
|
机器学习/深度学习 存储 算法
C语言栈与递归的实现讲解
C语言栈与递归的实现讲解
26 0
|
2月前
|
C语言
C语言栈的行编辑程序讲解
C语言栈的行编辑程序讲解
31 0
|
2月前
|
C语言
C语言栈的括号匹配的检验讲解及相关代码
C语言栈的括号匹配的检验讲解及相关代码
36 0
|
2月前
|
存储 安全 C语言
C语言抽象数据类型栈的定义讲解
C语言抽象数据类型栈的定义讲解
22 0
|
2月前
|
存储 C语言
C语言栈的表示和实现的定义讲解
C语言栈的表示和实现的定义讲解
23 0
|
11天前
|
存储 编译器 C语言
C语言进阶第十课 --------文件的操作-1
C语言进阶第十课 --------文件的操作
|
13天前
|
C语言
栈的问题:HDU—1022 Train Problem I(C语言)
栈的问题:HDU—1022 Train Problem I(C语言)
|
16天前
|
C语言
数据结构中顺序栈的进栈和出栈用C语言表示
数据结构中顺序栈的进栈和出栈用C语言表示
19 1