已知栈S 初始为空,用 I 表示入栈、O表示出栈,若入栈序列为a1a2a3a4a5,则通过栈 S 得到出栈序列a2a
A.IIOIIOIOOOB.IOIOIOIOIOC.IOOIIOIOIOD.IIOOIOIOOO
A.IIOIIOIOOOB.IOIOIOIOIOC.IOOIIOIOIOD.IIOOIOIOOO
已知栈S初始为空,对于一个符号序列a1a2a3a4a5(入栈次序也是该次序),当用I表示入栈、O表示出栈,则通过栈S得到符号序列a2a4a5a3a1的操作序列为______。
A.I O I I O O I O O I
B.I I O I O I O I O O
C.I O O I I O I O I O
D.I I O I I O I O O O
用一个数组S(设大小为MAX)作为两个堆栈的共享空间。请说明共享方法,栈满/栈空的判断条件,并用C或Pascal设计公用的入栈操作push(i,x),其中i为0或1,用于表示栈号,x为入栈值。【浙江大学1998五、2(7分)】
分别用多个顺序存储空间建立多个独立的堆栈;
设初始栈为空,s表示入栈操作,x表示出栈操作,则(33)是合法的操作序列。
A.sxxsssxxx
B.xxssxxss
C.sxsxssxx
D.xssssxxx
template<class t>
class Tstack
{
enum{size=1000};
T stack[size]
int top;
public:
Tsack():top(0){}
void push(const T&i){
if(top<size)
stack[top++]=i;
}
T pop()
{
if(top==O)exit(1);//栈空时终止运行
retum【 】;
}
};
①下面所示的序列中哪些是合法的?
A. IOIIOIOO B. IOOIOIIO C. IIIOIOIO D. IIIOOIOO
②通过对①的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。
●试题七
阅读以下说明和C++程序,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
以下程序的功能是设计一个栈类stack<T>,并建立一个整数栈。
【程序】
#include<iostream.h>
#include<stdli
B.h>
const int Max=20;∥栈大小
template<class T>
class stack{∥栈元素数组
T s[Max];∥栈顶下标
int top;
public:
stack()
{
top=-1;∥栈顶初始化为-1
}
void push(const T &item);∥item入栈
T pop();∥出栈
int stackempty()const;∥判断栈是否为空
};
template<class T>
void stack<T>::push(const T &item)
{
if(top== (1) )
{
cout<<"栈满溢出"<<endl;
exit (1) ;
}
top++;
s[top]=item;
}
template<class T>
T stack<T>::pop()
{
T temp;
if(top== (2) )
{
cout<<″栈为空,不能出栈操作″<<endl;
exit (1) ;
}
temp=s[top];
top--;
return temp;
}
template<class T>
int stack<T>::stackempty()const
{
return top==-1;
}
void main()
{
stack<int>st;
int a[]={1,2,3,4,5 };
cout<<"整数栈"<<endl;
cout<<"入栈序列:"<<endl;
for(int i=0;i<4;i++)
{
cout<<a[i]<<" ";
(3) ;
}
cout<<endl<<"出栈序列:";
while((4) )
cout<< (5) <<" ";
cout<<endl;
}
A.6
B.4
C.3
D.2
A.3
B.4
C.5
D.6
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!