顺序算 const STACK INIT SIZE 100 elem a const STACKINCREMENT 10 top typedef struct t stacksize 0 SElem Type * elem; incremento an- 2 int top∥栈找顶指针 an int stacksize. It increment: jSqStack SqStack:结构类型名; Sqstack:它的三个城分别是 elem:栈底指针,指向栈底位置; top:栈顶指针; Stacksize:已分配的存储空间(一元素为单位)大小; 约定栈顶指针指向栈顶元素的下(后面)一个位置
SqStack:结构类型名; SqStack: 它的三个域分别是: elem: 栈底指针,指向栈底位置; top: 栈顶指针; Stacksize:已分配的存储空间(一元素为单位)大小; const STACK_INIT_SIZE 100 const STACKINCREMENT 10 typedef struct { SElemType *elem; int top //栈顶指针 int stacksize; int increment; } SqStack; 顺序栈算法 约定栈顶指针指向栈顶元素的下(后面)一个位置 elem top stacksize increment 0 0 0 a1 a2 an-2 an-1 an . . . . .
顺序寞 1)初始化操作 InitStack_Sq(( SqStack&s)em a 参数:S是存放栈的结构变量; top 功能:建一个空栈S; stacksize 100 increment 10 an-2 void InitStack_ sq sqstack &s int maxsize=STACK INIT SIZE int incresize= SRACKINCREMENTSIZE )// S base= new SElemType[STACK INIT SIZe S top=0 const STACK INIT SIZE 100 S. stacksize= maxsize;const STACKINCREMENT 10 S. incrementsize incresize 3InitStack_Sq
elem top stacksize increment 0 0 0 void InitStack_Sq(SqStack &S, int maxsize=STACK_INIT_SIZE, int incresize = SRACKINCREMENTSIZE ) { S.base= new SElemType[STACK_INIT_SIZE]; S.top = 0; S.stacksize = maxsize; S.incrementsize = incresize; } //InitStack_Sq 1) 初始化操作InitStack_Sq((SqStack &S) 参数:S是存放栈的结构变量; 功能:建一个空栈S; a1 a2 an-2 an-1 an . . . . . . 100 0 10 顺序栈算法 const STACK_INIT_SIZE 100 const STACKINCREMENT 10
顺序寞 2)销毁栈操作 DestroyStack_Sq( SqStack&S) 功能:销毁一个已存在的栈; void Detroy Stack_ Sq( sqstack &s) elem ull top a stacksize0 If(!Selem) ) return ERROR increment a n-2 delete Selem an-1 S top=0; S. stacksize=0 Sincrement =0:
void DetroyStack_Sq ( SqStack &S) { If ( !S.elem) return ERROR; delete S.elem; S.top = 0; S.stacksize = 0; S.increment = 0; } 2) 销毁栈操作 DestroyStack_Sq(SqStack &S ) 功能:销毁一个已存在的栈; elem top stacksize increment 20 100 10 a1 a2 an-2 an-1 an . . . . . . 0 0 0 null 顺序栈算法
顺序寞 3)置空栈操作 Clearstack_ Sq( SqStack &S) 功能:将栈S置为空栈 void Clear Stack_Sq( sqStack&s) elem a top 0 a If(!Selem ) return ERROR stacksize 100 S top=0; increment 10 an-2 an-1
3) 置空栈操作ClearStack_Sq(SqStack &S) 功能:将栈S置为空栈 void ClearStack_Sq ( SqStack &S) { If ( !S.elem ) return ERROR; S.top = 0; } elem top stacksize increment 20 100 10 a1 a2 an-2 an-1 an . . . . . . 0 顺序栈算法
顺序算 4)取栈顶元素操作 GetTop_ Sa( SqStackS, SElem Type&e) 功能:取栈顶元素,并用e返回; bool Get Top_ Sq(SqStack S, SelemType &e) elem topia Istacksize 100 if(S top ==return FALSE increment10 a e=selem[Stop-1 return TRUE a+1
bool GetTop_Sq(SqStack S, SelemType &e) { if ( S.top == 0 ) return FALSE; e = S.elem[S.top-1]; return TRUE; } 4) 取栈顶元素操作GetTop_Sq(SqStack S, SElemType &e) 功能:取栈顶元素,并用e返回; 顺序栈算法 elem top stacksize increment i 100 10 a1 a2 ai-1 aiai+1 . . . . . . e a ai i