压栈操作 bool arrStack<T>: push(const T item)i if (top = mSize-1) ∥栈已满 cout<"栈满溢出"<<endl; return false; else ∥新元素入栈并修改栈顶指针 st[++top]= item; return true; “十一五”国家缀规划教材。张铭,王腾蛟,赵海£,《飙据结构与算法》,高教社,B0.6
“十一五”国家级规划教材。张铭,王腾蛟,赵海燕,《数据结构与算法》,高教社,2008. 6。 压栈操作 bool arrStack<T>::push(const T item) { if (top == mSize-1) { // 栈已满 cout << "栈满溢出" << endl; return false; } else { // 新元素入栈并修改栈顶指针 st[++top] = item; return true; } }
出栈操作 bool arrstack<T>:pop(T&item){∥出栈的顺序实现 if (top==-1) ∥栈为空 cout<<"栈为空,不能执行出栈操作<<end; return false; else t item =st[top--I ∥返回栈顶元素并修改栈顶指针 return true: “十一五”国家缀规划教材。张铭,王腾蛟,赵海£,《飙据结构与算法》,高教社,B0.6
“十一五”国家级规划教材。张铭,王腾蛟,赵海燕,《数据结构与算法》,高教社,2008. 6。 出栈操作 bool arrStack<T>::pop(T & item) { // 出栈的顺序实现 if (top == -1) { // 栈为空 cout << "栈为空,不能执行出栈操作"<< endl; return false; } else { item = st[top--]; // 返回栈顶元素并修改栈顶指针 return true; } }
读栈操作 bool arrStack<T> top(T item)t ∥返回栈顶内容,但不弹出 if (top==-1)i ∥栈空 cout<"栈为空,不能读取栈顶元素"<end; return false; else t item=st[topl return true; “十一五”国家缀规划教材。张铭,王腾蛟,赵海£,《飙据结构与算法》,高教社,B0.6
“十一五”国家级规划教材。张铭,王腾蛟,赵海燕,《数据结构与算法》,高教社,2008. 6。 读栈操作 bool arrStack<T>:: top(T & item) { // 返回栈顶内容,但不弹出 if (top == -1) { // 栈空 cout << " 栈为空,不能读取栈顶元素"<< endl; return false; } else { item = st[top]; return true; } }
其他操作 把栈清空 void arr Stack<T>::clear(i top =-1; ■栈满时,返回非零值(真值true) bool arrStack<T> isFullot return (top = maxsize-1): “十一五”国家缀规划教材。张铭,王腾蛟,赵海£,《飙据结构与算法》,高教社,B0.6
“十一五”国家级规划教材。张铭,王腾蛟,赵海燕,《数据结构与算法》,高教社,2008. 6。 其他操作 ◼ 把栈清空 void arrStack<T>::clear() { top = -1; } ◼ 栈满时,返回非零值(真值true) bool arrStack<T>:: isFull() { return (top == maxsize-1) ; }
栈的变种 两个独立的栈 a底部相连:双栈 口迎面增长 哪一种更好些? op1迎面增长的栈 top2 “十一五”国家缀规划教材。张铭,王腾蛟,赵海£,《飙据结构与算法》,高教社,B0.6
“十一五”国家级规划教材。张铭,王腾蛟,赵海燕,《数据结构与算法》,高教社,2008. 6。 栈的变种 ◼ 两个独立的栈 ❑ 底部相连:双栈 ❑ 迎面增长 哪一种更好些? top1 迎面增长的栈 top2