顺序栈实现十进制与二进制的转化


用顺序栈实现十进制与二进制的转化

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 #define M 100
 5 typedef int ElemType;  6 typedef struct
 7 {  8  ElemType data[M];  9     int top; 10 }Stack; 11 
12 //初始化栈
13 void InitStack(Stack *s) 14 { 15     s->top = -1; 16 } 17 int Push(Stack *s,ElemType e) 18 { 19     if (s->top == M-1) 20  { 21         printf("栈满\n"); 22         return 0; 23  } 24     s->top++; 25     s->data[s->top]=e; 26     return 1; 27 } 28 
29 //判断是否为空
30 int Empty(Stack *s) 31 { 32     return(s->top==-1); 33 } 34 //出栈
35 int Pop(Stack *s,ElemType *e) 36 { 37     if(Empty(s)) 38  { 39         printf("\n Stack is free"); 40         return 0; 41  } 42     *e=s->data[s->top]; 43     s->top--; 44     return 1; 45 } 46 
47 void Conversion(int N) 48 { 49     int e; 50     Stack *s = (Stack *)malloc(sizeof(Stack)); 51  InitStack(s); 52     while(N) 53  { 54         Push(s,N%2); 55         N=N/2; 56  } 57     while(!Empty(s)) 58  { 59         Pop(s,&e); 60         printf("%d",e); 61  } 62 } 63 
64 int main() 65 { 66     int n,m; 67     while(1) 68  { 69         printf("1:进行转换,2:退出\n"); 70         scanf("%d",&n); 71         switch(n) 72  { 73             case 1:    printf("请输入待转换的整数值: "); 74                     scanf("%d",&m); 75                     printf("转换为二进制值为: "); 76  Conversion(m); 77                     printf("\n"); 78                     break; 79             case 2:    exit(0); 80             default:    printf("error\n"); 81  } 82  } 83 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM