mansize 初始状态 610 b2] b{3 b(4 615 t{2 t[3 t[4 maxSize-1 Dm某时刻状态 b0] 612 b{3 4 65 1]插入区→t2→+t31 +t4 maxSize-1 V图图:图门插入x之后 b0] →b3] b5] →2]→t[3] 插入新元素时的栈满处理 StackFull()
插入新元素时的栈满处理 StackFull ( )
template <class Type> void Push( const int i, const Type &z item)& if(t团=b计+1l) StackFull(); elseⅥ++tj]=iem;/第i个栈进栈 template <class Type> Type*Pop( const it if(t[i==bi) i StackEmpty(i; return 0; 3 else return&i-];第i个栈出栈
template <class Type> void Push ( const int i, const Type & item ) { if ( t [i] == b[i+1] ) StackFull (i); else V[++t[i]] = item; //第i 个栈进栈 } template <class Type> Type *Pop ( const i) { if ( t[i] == b[i] ) { StackEmpty(i); return 0; } else return & V[t[i]--]; //第i 个栈出栈 }
栈的链接表示一链式栈 top- ∧ 链式栈无栈满问题,空间可 扩充 插入与删除仅在栈顶处执行 链式栈的栈顶在链头 适合于多栈操作
栈的链接表示 — 链式栈 链式栈无栈满问题,空间可 扩充 插入与删除仅在栈顶处执行 链式栈的栈顶在链头 适合于多栈操作
链式栈( Linkedstack)类的定义 template <class Type> class Stack; template <class Type> class StackNode friend class Stack<Type>, rivate Type data; 结点数据 Stacknode<Type>*ink;∥结点链指针 StackNode( type d=0, StackNode<type> PL=NULL ) data(d), linkd
template <class Type> class Stack; template <class Type> class StackNode { friend class Stack<Type>; private: Type data; //结点数据 StackNode<Type> *link; //结点链指针 StackNode ( Type d=0, StackNode<Type> *l=NULL ) : data (d), link (l) { } }; 链式栈 (LinkedStack)类的定义
template <class Type> class Stack i public: Stack(: top(null)& Stack o; void Push( const Type item); Type Pop (; Type GetTopo void MakeEmpty(i top=NULL; 3 int IsEmpty( const i return top==NULL; j private Stacknode<Type>*p;∥顶指针
template <class Type> class Stack { public: Stack ( ) : top ( NULL ) { } ~Stack ( ); void Push ( const Type & item); Type Pop ( ); Type GetTop ( ); void MakeEmpty ( ) { top=NULL; } int IsEmpty ( ) const { return top == NULL; } private: StackNode<Type> *top; //栈顶指针 }