栈的编程思路:
1初始化一个空栈
2.判断栈是否为空
3.判断栈是否满了
4.入栈
5.出栈
6.销毁栈
#include <stdio.h>
#include <stdlib.h>#include <string.h>
typedef struct{
int *top;
int *base;
int stack_size;
}stack;
void init(stack *s)
{
s->base=(int *)malloc(100*sizeof(int));
if(s->base==NULL)
{
perror("s->base");
exit(-1);
}
s->top=s->base;
s->stack_size=100;
}
int empty(stack *s)
{
return s->top==s->base;
}
int full(stack *s)
{
return s->top-s->base==s->stack_size-1;
}
int push(stack *s,int num)
{
if(full(s))
{
printf("stack is full\n");
exit(-1);
}
return *s->top++=num;
}
int pop(stack *s)
{
if(empty(s))
{
printf("stack is empty\n");
exit(-1);
}
return *--s->top;
}
void destroy(stack *s)
{
free(s->base);
s->top=NULL;
s->base=NULL;
s->stack_size=0;
}
int main(int argc,char** argv)
{
stack *s;
int num;
printf("input the num:");
scanf("%d",&num);
int mode;
printf("input the mode:");
scanf("%d",&mode);
init(s);
while(num){
push(s,num%mode);
num=num/mode;
}
while(!empty(s)){
printf("%d",pop(s));
}
printf("\n");
destroy(s);
return 0;
}