bool Pop stack &S, ElemType &e) ∥若栈不空,则删除S的栈顶元素,用e返回 其值,并返回TRUE;否则返回 FALSE if(stop == 0)return FALSE; e=*( s, base+Stop-1;∥返回非空栈 中栈顶元素 s top ∥栈顶指针前移 return True
• bool Pop (Stack &S, ElemType &e) { // 若栈不空,则删除S的栈顶元素,用 e 返回 其值,并返回 TRUE;否则返回 FALSE if (S.top == 0) return FALSE; e = *(S.base + S.top-1); // 返回非空栈 中栈顶元素 --S.top; // 栈顶指针前移 return TRUE; }
链栈 ·结构定义: ty pede struct t SLink top; ∥栈顶指针 int length;∥栈中元素个数 3 Stack; 栈底
链栈 • 结构定义: typedef struct { SLink top; // 栈顶指针 int length; // 栈中元素个数 } Stack;
void InitStack( Stack &s) ∥构造一个空栈S S top =NULL;∥设栈顶指针的初值 为"空" Stength =0 ∥空栈中元素个数为0 }∥ nitstack
• void InitStack ( Stack &S ) { // 构造一个空栈 S S.top = NULL; // 设栈顶指针的初值 为"空" S.length = 0; // 空栈中元素个数为0 } // InitStack
void Push( Stack &S, ElemType e) ∥在栈顶之上插入元素e为新的栈顶元素 p= new lNode;∥建新的结点 flp)exi(1);∥存储分配失败 p→>data=e p→next=stop;∥链接到原来的栈顶 S top= p; ∥移动栈顶指针 ++Slength ∥栈的长度增1
• void Push ( Stack &S, ElemType e ) { // 在栈顶之上插入元素 e 为新的栈顶元素 p = new LNode; // 建新的结点 if(!p) exit(1); // 存储分配失败 p -> data = e; p -> next = S.top; // 链接到原来的栈顶 S.top = p; // 移动栈顶指针 ++S.length; // 栈的长度增1 }
bool Pop( stack &S, sElemType &e) ∥若栈不空,则删除S的栈顶元素,用e返回其值, 并返回TRUE;否则返回 FALSE if (Is top return FAlSE else e=stop→data;∥返回栈顶元素 g=s top; stop=Stop>next;∥修改栈顶指针 -s length ∥栈的长度减1 delete g; ∥释放被删除的结点空间 return TRUe
• bool Pop ( Stack &S, SElemType &e ) { // 若栈不空,则删除S的栈顶元素,用 e 返回其值, 并返回 TRUE;否则返回 FALSE if ( !S.top ) return FALSE; else { e = S.top -> data; // 返回栈顶元素 q = S.top; S.top = S.top -> next; // 修改栈顶指针 --S.length; // 栈的长度减1 delete q; // 释放被删除的结点空间 return TRUE; } }