#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
#define STACK_INT_SIZE 10
#define STACKINCREMENT 5
typedef int ElemType;
typedef struct
{
ElemType *base;
ElemType *top;
int stacksize;
}SqStack;
int InitStack(SqStack *S)
{
S->base=(ElemType*)malloc(STACK_INT_SIZE *sizeof(ElemType));
if(!S->base)
return ERROR;
S->top=S->base;
S->stacksize=STACK_INT_SIZE;
return OK;
}
int 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)
return ERROR;
s->top=s->base+s->stacksize;
s->stacksize+=STACKINCREMENT;
}
*s->top=e;
s->top++;
return OK;
}
int Pop(SqStack *s,ElemType *e)
{
if(s->top==s->base)
return ERROR;
else
{
s->top--;
*e=*s->top;
}
return OK;
}
int CreateStack(SqStack *s)
{
int e;
if(InitStack(s))
printf("Init Success!\n");
else
{
printf("Init Fall!\n");
return ERROR;
}
printf("input data:(Terminated by inputing a character)\n");
while(scanf("%d",&e))
Push(s,e);
return OK;
}
void PrintStack(SqStack *S)
{
ElemType e;
while(Pop(S,&e))
printf("%3d",e);
}
int zhuanhuan(SqStack *a)
{
int m,n;
int i=0;
printf("请输入十进制数n:");
scanf("&d",&n);
while(n>0)
{
m=n%2;
i=i+1;
n=n/2;
Push(a,m);
}
return 1;
}
int main()
{
SqStack ss;
int a[100];
int t,i=0,n;
printf("\n1-creatStack\n");
CreateStack(&ss);
printf("\n2-Pop&Print\n");
PrintStack(&ss);
printf("\n将十进制数转换二进制数,\n");
printf("请输入十进制数:");
getchar();
scanf("%d",&t);
while(t>0)
{
a[i]=t%2;
i=i+1;
t=t/2;
}
for(i--;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return 0;
}
'('match')'!
'('noy match')'!
【实验三】
最新推荐文章于 2024-05-01 17:54:06 发布