顺序栈的基础代码

1、创建顺序栈管理结构体
2、初始化一个空的顺序栈
3、判断是否为空是否为满
4、入栈出栈
5、遍历

代码:
#include
#include
#include
#include
typedef struct seq_stack
{
int *ps;
int len;
int cnt;
}S,*STACK;
STACK init_stack(int len)
{
STACK s;
s = malloc(sizeof(S));
if(s == NULL)
{
printf(“初始化失败\n”);
return s;
}
s->ps = malloc(sizeof(int));
s->len = len;
s->cnt = 0;
return s;
}

bool stack_empty(STACK s)
{
if(s->cnt == 0)
return true;
else
return false;
}
bool stack_full(STACK s)
{
if(s->cnt == s->len)
return true;
else
return false;
}

bool stack_push(STACK s,int n)
{
if(stack_full(s))
{
printf(“栈满!\n”);
return false;
}
s->ps[s->cnt]=n;
s->cnt++;
return true;
}

bool stack_pop(STACK s,int *n)
{
if(stack_empty(s))
{
printf(“栈空!\n”);
return false;
}
*n = s->ps[s->cnt-1];
s->cnt–;
return true;
}

bool show_seq_stack(STACK p)
{
if(stack_empty§)
{
return false;
}
for(int i = p->cnt-1;i>=0;i–)
{
printf("%d",p->ps[i]);
}
printf("\n");
return true;
}
int main(void)
{
STACK sta;
sta = init_stack(4);
int a,num;
printf(“请输入数据:”);
scanf("%d",&a);
while(a > 0)
{
stack_push(sta,a%8);
a = a/8;
}
printf(“转化为8进制数为:”);
show_seq_stack(sta);
return 0;
}

你可能感兴趣的:(顺序栈的基础代码)