假定栈用顺序的方式存储,栈类型stack定义如下:
TYPE stack=RECORD
A: ARRAY[1..M0OF datatype;
t:0..M0;
END;
下面是栈的一种基本运算的实现:
PROCEDURE xxxx(VAR s:stack)
BEGIN
IF s.t=0
THEN print('underflow')
ELSE s.t:=s.t-1;
END;
请问这是栈的哪种基本运算?( )。
A) 栈的推入
B) 栈的弹出
C) 读栈顶元素
D) 将栈置为空栈
A.
B.
C.
D.
第1题:
开始往输入串末尾和分析栈stack中放“#”,然后把文法开始符号压栈。预测分析程序总是按_________和________。
A.stack栈顶符号X 最后的输入符号b
B.stack栈顶符号X 当前输入符号a
C.stack栈尾符号X 当前输入符号a
D.stack栈尾符号X 最后的输入符号b
第2题:
45、Stack表示栈
第3题:
Z-Stack协议栈中可以自定义事件。
第4题:
栈stack[0..m-1]中,用top指向栈顶元素,栈底在stack[0]处。判断栈满的条件是()
A.top = =-1
B.top = =m
C.top = =0
D.top = =m-1
第5题:
4、当利用大小为n的数组顺序存储一个栈时,假定用top==0表示栈空,则向这个栈插入一个元素时,操作为()。
A.top=top+1; stack[top]=x;
B.stack[top]=x; top=top+1;
C.top=top-1; stack[top]=x;
D.stack[top]=x; top=top-1;
第6题:
1、已知一个双端栈的地址为dS,则该双端栈不满时,,元素x进1号栈(高端栈)操作的语句是()
A.dS->stack[--dS->top[1]]=x;
B.dS->stack[dS->top[1]]=x;dS->top[1]--;
C.dS->top[1]--; dS->stack[dS->top[1]]=x;
D.dS->stack[++dS->top[1]]=x;
第7题:
已知一个双端栈的地址为dS,则该双端栈不满时,,元素x进1号栈(高端栈)操作的语句是()
A.dS->stack[--dS->top[1]]=x;
B.dS->stack[dS->top[1]]=x;dS->top[1]--;
C.dS->top[1]--; dS->stack[dS->top[1]]=x;
D.dS->stack[++dS->top[1]]=x;
第8题:
(12)假定栈用顺序的方式存储,栈类型 stack定义如下:
TYPE stack=RECORD
A:ARRAY[l..m0] OF datatype;
t:O..m0;
END;
下面是栈的一种基本运算的实现:
PROCEDURE xxxx(VAR s:satack);
BEGIN
IF s.t=0
THEN print(‘underflow’)
ELSE s.t:=s.t-1;
END;
请问这是栈的哪一种基本运算?
A) 栈的推入
B)栈的弹出
C)读栈顶元素
D)将栈置为空栈
第9题:
阅读下列说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
栈(Stack)结构是计算机语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶(Stock Top),而另一端称为栈底(Stock Bottom)。栈的基本操作包括:创建栈(NewStack)、判断栈是否为空(IsEmpty)、判断栈是否已满(IsFull)、获取栈顶数据(Top)、压栈/入栈(Push)、弹栈/出栈(Pop)。
当设计栈的存储结构时,可以采取多种方式。其中,采用链式存储结构实现的栈中各数据项不必连续存储(如下图所示)。
以下C代码采用链式存储结构实现一个整数栈操作。
【C代码】
typedef struct List {
int data; //栈数据
struct List* next; //上次入栈的数据地址
}List;
typedef struct Stack{
List* pTop; //当前栈顶指针
}Stack;
Stack* NewStack() {return (Stack*) calloc(1/sizeof(Stack));}
int IsEmpty(Stack* S){//判断栈S是否为空栈
if((1))return 1;
return 0;
}
int Top(Stack* s){//获取栈顶数据。若栈为空,则返回机器可表示的最小整数
if(IsEmpty(S))return INT_ MIN;
return (2);
}
void Push(Stack* S,int theData) {//将数据theData压栈
List* newNode;
newNode=(List*)calloc(1/sizeof (List));
newNode->data=theData;
newNode->next=S->pTop;
S->pTop=(3);
}
void Pop(Stack* S) {//弹栈
List* lastTop;
if(IsEmpty(S) ) return;
lastTop=S->pTop;
S->pTop=(4);
free(lastTop);
}
define MD(a) a<<2
int main(){
int i;
Stack* myStack;
myStack= NewStack();
Push(myStack,MD(1));
Push(myStack,MD(2));
Pop(myStack);
Push(myStack,MD(3)+1);
while( !IsEmpty(myStack) ){
printf("%d",Top(myStack));
Pop(myStack);
}
return 0;
}
以上程序运行时的输出结果为:(5)