View Code
1 #include <stdio.h> 2 #include "SqStack.h" 3 #include <stdlib.h> 4 int main() 5 { 6 SqStack s; 7 InitStack(s); 8 int num; 9 int e; 10 scanf("%d",&num); 11 DtoBcovert(s,num); 12 while(!IsEmpty(s)) 13 { 14 Pop(s,e); 15 printf("%d",e); 16 } 17 printf("\n"); 18 19 20 21 return 0; 22 } 23 24 /* 25 **构造空栈 26 */ 27 int InitStack(SqStack &s) 28 { 29 s.base = (SElemType *)malloc(InitStackSize*sizeof(SElemType)); 30 if(s.base == NULL) return 0; 31 s.top = s.base; 32 s.stacksize = InitStackSize; 33 return 1; 34 } 35 36 /* 37 **输出栈顶元素 38 */ 39 40 int GetTop(SqStack s,SElemType &e) 41 { 42 if(s.top == s.base) return 0; 43 e = *(s.top - 1); 44 return OK; 45 } 46 47 /* 48 **元素入栈 49 */ 50 51 int Push(SqStack &s,SElemType e) 52 { 53 if(s.top >=s.base + s.stacksize) 54 { 55 s.base = (SElemType*)realloc(s.base,(InitStackSize + InitCream)*sizeof(SElemType)) ; 56 if(s.base == NULL) return 0; 57 s.top = s.base + s.stacksize; 58 s.stacksize = InitStackSize + InitCream; 59 } 60 61 *s.top = e; 62 s.top++; 63 return 1; 64 } 65 66 /** 67 **元素出栈 68 **/ 69 int Pop(SqStack &s,SElemType &e) 70 { 71 if(s.top == s.base) return 0; 72 e = *(--s.top); 73 return OK; 74 } 75 76 /* 77 **栈的应用,十进制转二进制 78 */ 79 80 void DtoBcovert(SqStack &s,int num) 81 { 82 while(num) 83 { 84 Push(s,num %2); 85 num = num/2 ; 86 } 87 } 88 int IsEmpty(SqStack s) 89 { 90 if(s.top ==s.base) return OK; 91 else return 0; 92 93 }