| 
 | 
 
 
发表于 2019-1-1 23:24:54
|
显示全部楼层
 
 
 
 
- #include<stdio.h>
 
 - #include<stdlib.h>
 
 - #include<math.h>
 
 - #define STACK_INIT_SIZE 20
 
 - #define STACKINCREMENT 10
 
 - typedef char ElemType;
 
 - typedef struct
 
 - {
 
 -         ElemType *base;
 
 -         ElemType *top;
 
 -         int StackSize;
 
 - }sqStack;
 
 - void InitStack(sqStack *s)
 
 - {
 
 -         s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
 
 -         if(!s->base)
 
 -         {
 
 -                 exit(0);
 
 -         }
 
 -         s->top = s->base;
 
 -         s->StackSize = STACK_INIT_SIZE;
 
 - }
 
 - void push(sqStack *s, ElemType e)
 
 - {
 
 -         if(s->top - s->base >= s->StackSize)
 
 -         {
 
 -                 s->base = (ElemType *)realloc(s->base, (s->StackSize + STACKINCREMENT) * sizeof(ElemType));
 
 -                 if(!s->base)
 
 -                 {
 
 -                         exit(0);
 
 -                 }
 
 -         }
 
 -         *(s->top) = e;
 
 -         s->top++;
 
 - }
 
 - void pop(sqStack *s, ElemType *e)
 
 - {
 
 -         if(s->top == s->base)
 
 -         {
 
 -                 return;
 
 -         }
 
 -         *e = *--(s->top);
 
 - }
 
 - int StackLen(sqStack s)
 
 - {
 
 -         return(s.top - s.base);
 
 - }
 
 - int main()
 
 - {
 
 -         ElemType c;
 
 -         sqStack s;
 
 -         int len, i, sum = 0;
 
 -         InitStack(&s);
 
 -         printf("请输入二进制数,输入#符号表示结束\n");
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         //scanf("%c", &c);
 
 -         //while(c != '#')
 
 -         while((c = getchar()) != '#')
 
 -         {
 
 -                 push(&s, c);
 
  
-         }
 
 -         getchar();
 
 -         len = StackLen(s);
 
 -         printf("栈当前的容量是%d\n", len);
 
 -         for(i = 0; i<len; i++)
 
 -         {
 
 -                 pop(&s, &c);
 
 -                 sum = sum + (c - 48)*pow(2, i);
 
 -                 printf("转化为十进制的数是%d\n", sum);
 
 -         }
 
 -         return 0;
 
  
- }
 
 
  复制代码 |   
 
 
 
 |