栈数据结构为加以限制条件的线性表,具有后进先出的特点,只能从线性表尾部取元素,也只能从尾部添加元素。
栈具有递归特性,栈的应用有:数制转换、括号匹配的检验、行编辑程序、表达式求值。
用ElemType表示抽象数据类型,
栈数据结构的表示和操作:
#define INIT_STACK_SIZE 100
typedef struct STACK
{
ElemType *pBase;
ElemType *pTop;
short stackSize;
}myStack;
STATUS initStack(myStack &stack);
STATUS popStack(myStack &stack,ElemType *element);
STATUS pushStack(myStack &stack,ElemType element);
STATUS isTempStack(myStack &stack);
STATUS initStack(myStack &stack)
{
stack->pBase = malloc(INIT_STACK_SIZE*sizeof(ElemType));
if(stack == NULL)
{
printf("获取内存错误!/n");
return FALSE;
}
stackSize = INIT_STACK_SIZE;
stack->pTop = stack->pTop;
return TRUE;
}
STATUS popStack(myStack &stack,ElemType *element)
{
if( isTempStack) return;
element = *(stack->pTop--);
}
STATUS pushStack(myStack &stack,ElemType element);
STATUS isTempStack(myStack &stack)
{
if(stack == NULL)
{
printf("该栈不存在!/n");
return FALSE;
}
if( stack->pTop == stack->pTop) return TRUE;
}