动态顺序栈的C语言实现(二)

2014-11-23 21:36:06 · 作者: · 浏览: 46
个数
value为欲压栈的数值
*返 回 值:空
********************************************************/
void seqstack_push(malloc_seqstack *p_stack, int length, eletype value)
{
eletype *p_tmp = p_stack->p_bottom;

if (seqstack_full(p_stack))
{
printf("栈已满,系统将为其增加空间!\n");

p_stack->p_bottom =
(eletype *)realloc(p_stack->p_bottom, length*sizeof(eletype));

if (!p_stack->p_bottom)
{
free(p_tmp);
exit(-1);
}
p_stack->stack_size = length;
}
(p_stack->p_top)++;
*(p_stack->p_top) = value;

return;
}

/********************************************************
*函数名称:seqstack_pop
*函数功能:出栈
*入口参数:p_stack为指向结构体指针
*返 回 值:value为出栈数据
********************************************************/
eletype seqstack_pop(malloc_seqstack *p_stack)
{
eletype value = 0;

if (seqstack_empty(p_stack))
{
printf("栈已空!\n");
exit(-1);
}
value = *(p_stack->p_top--);

return value;
}

/********************************************************
*函数名称:seqstack_destroy
*函数功能:销毁栈
*入口参数:p_stack为指向结构体指针
*返 回 值:空
********************************************************/
void seqstack_destroy(malloc_seqstack *p_stack)
{
free(p_stack->p_bottom);
free(p_stack);
p_stack->stack_size = 0;
p_stack->p_bottom = NULL;
p_stack->p_top = NULL;
p_stack = NULL;

return;
}

/***********************程序结束************************/


程序运行结果:


动态顺序栈的C语言实现


栈越界时提示的错误信息:


动态顺序栈的C语言实现


C语言梳理一下,分布在以下10个章节中: