#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
   6:  
char ElemType;
struct {
   9:     ElemType *base;
  10:     ElemType *top;
int stacksize;
  12: } sqStack;
  13:  
void initStack(sqStack *s)
  15: {
/*内存中开辟一段连续空间作为栈空间,首地址赋值给s->base*/
sizeof(ElemType));
  18:  
/*分配空间失败*/
  20:  
/*最开始,栈顶就是栈底*/
/*最大容量为STACK_INIT_SIZE */
  23: }
  24:  
void Push(sqStack *s, ElemType e) {
if(s->top - s->base >= s->stacksize) {
/*栈满,追加空间*/
  28:         s->base = (ElemType *)realloc(s->base, (s->stacksize +
sizeof(ElemType));
  30:  
/*存储分配失败*/
  32:  
  33:         s->top = s->base + s->stacksize;
/*设置栈的最大容量*/
  35:     }
  36:  
/*放入数据*/
  38:     s->top++;
  39: }
  40:  
void Pop(sqStack *s , ElemType *e) {
return;
  43:  
  44:     *e = *--(s->top);
  45: }
  46:  
int StackLen(sqStack s) {
return (s.top - s.base) ;
  49: }
  50:  
int main()
  52: {
  53:     ElemType c;
  54:     sqStack s1;
  55:     sqStack s2;
int len, i, j, sum = 0;
/*创建一个栈s1,用来存放二进制字符串*/
  58:  
);
/*输入0/1字符表示的二进制数,以#结束*/
, &c);
  62:  
'#')
  64:     {
'1')
  66:             Push(&s1, c);
  67:  
, &c);
  69:     }
  70:  
/*创建一个栈s2,用来存放八进制字符串*/
/*得到栈中的元素个数,即二进制数的长度*/
  73:  
for(i = 0; i < len; i = i + 3) {
for(j = 0; j < 3; j++) {
/*取出栈顶元素*/
/*转换为八进制数*/
  78:  
break;
  80:         }
  81:  
/*将八进制数以字符形式压入栈中*/
  83:         sum = 0;
  84:  
  85:     }
  86:  
) ;
  88:  
/*输出八进制栈的内容*/
  90:         Pop(&s2, &c);
, c);
  92:     }
  93: }

相关文章: