课后练习:开发类twoStacks,它用一个数组描述两个栈。一个栈的栈底在位置0,另一个栈的栈底在位置 arrayLength-1。两个栈都向数组的中间增长(见图8-4)。该类的方法必须能够在每一个栈中实施ADT栈的所有操作。而且每一个方法的复杂度应为O(1),其中不包括改变数组大小所需要的时间。

课后练习:开发类twoStacks,它用一个数组描述两个栈。一个栈的栈底在位置0,另一个栈的栈底在位置 arrayLength-1。两个栈都向数组的中间增长(见图8-4)。该类的方法必须能够在每一个栈中实施ADT栈的所有操作。而且每一个方法的复杂度应为O(1),其中不包括改变数组大小所需要的时间。

#define MAXSIZE 100
class twoStack{
private: int nums[MAXSIZE]{};
private: int firstTop=0,secondTop=MAXSIZE;
bool push_first(int data){
if(firstTop==secondTop){
printf("FULL!\n");
return false;
}
nums[firstTop++] = data;
return true;
}
bool push_second(int data){
if(firstTop==secondTop){
printf("FULL!\n");
return false;
}
nums[--secondTop] = data;
return true;
}
int first_Top(){
if(firstTop==0){
printf("firstStack is empty!\n");
return -1;
}
return nums[firstTop-1];
}
int second_Top(){
if(secondTop==MAXSIZE){
printf("secondStack is empty!\n");
return -1;
}
return nums[secondTop];
}
void first_Pop(){
if(firstTop==0){
printf("firstStack is empty!\n");
}else{
firstTop--;
}
}
void second_Pop(){
if(secondTop==MAXSIZE){
printf("secondStack is empty!\n");
}else{
secondTop++;
}
}
bool firstStack_Empty(){
return firstTop == 0;
}
bool secondStack_Empty(){
return secondTop == MAXSIZE;
}
};