#include"pch.h"
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define STACK_INIT_SIZE 20
#define STACK_INCREASEMENT 10
typedef char ElemType
;
typedef struct
{
ElemType
*top
, *base
;
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 c
)
{
if (s
->top
- s
->base
>= s
->stacksize
)
{
s
->base
= (ElemType
*)realloc(s
->base
, (s
->stacksize
+ STACK_INCREASEMENT
) * sizeof(ElemType
));
if (!s
->base
)
exit(0);
}
*(s
->top
) = c
;
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("请输入一个二进制数,以#结尾:");
scanf_s("%c", &c
);
while (c
!= '#')
{
Push(&s
, c
);
scanf_s("%c", &c
);
}
getchar();
len
= StackLen(s
);
for (i
= 0; i
< len
; i
++)
Pop(&s
, &c
);
sum
+= (c
- 48)*pow(2, i
);
printf("栈的当前容量为%d\n", len
);
printf("转化为十进制数为%d\n", sum
);
}
转载请注明原文地址: https://mac.8miu.com/read-513534.html