棧資料結構為加以限制條件的線性表,具有後進先出的特點,只能從線性表尾部取元素,也只能從尾部添加元素。
棧具有遞迴特性,棧的應用有:數制轉換、括弧匹配的檢驗、行編輯程式、運算式求值。
用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;
}