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语言梳理一下,分布在以下10个章节中: