若一个栈以向量V[1..n]存储,且空栈的栈顶指针top为n+1,则将元素x入栈的正确操作是(37)。
A.top=top+1;V[top]=x;
B.V[top]=x;top=top+1;
C.top=top-1;V[top]=x;
D.V[top]=x;top=top-1;
A.top=top+1;V[top]=x;
B.V[top]=x;top=top+1;
C.top=top-1;V[top]=x;
D.V[top]=x;top=top-1;
A.top=top+1;V[top]=x
B. V[top]=x;top=top+1
C. top=top-1;V[top]=x
D. V[top]=x ;top=top-1
A.top++; data[top]=x;
B.data[top]=x; top++;
C.top--; data[top]=x;
D.data[top]=x; top--;
A、*S->top=e;S->top++;
B、S->top++;*S->top=e;
C、*S->top=e
D、S->top=e;
A.m+1
B.0
C.m-1
D.产生栈空错误
A.top:=top+1
B.top:=top-1
C.top:=0
D.top:=N
[说明]
用链式存储结构实现的栈称为链栈。若链栈元素的数据类型为datatype,以LinkStack记链栈结构,其类型定义为:
typedef struct node
{ datatype data;
stmct node * next;
} StackNode, * LinkStack;
由于栈的主要操作都是在栈顶进行的,因此我们把链表的头部作为栈顶。设top为栈顶指针,即:LinkStack top。
下面各函数的功能说明如下:
(1)LinkStack Init_LinkStack():建立并返回空的链栈;
(2)int Empty_LinkStack(LinkStack top):判断top所指链栈是否空;
(3)LinkStack Push_LinkStack(LinkStacktop,datatypex):将数据x压人top所指链栈的栈顶,返回新栈指针;
(4)LinkStack Pop_LinkStack (LinkStacktop, datatype*x):弹出top所指链栈的栈顶元素x,返回新栈指针。
[函数]
LinkStaek Init_LinkStack()
{ returnNULL;
int Empty_LinkStack (LinkStaek top)
if(top = = NULL) return 1;
else return 0;
LinkStaek Push_LinkStaek(LinkStaektop, datatype X)
{ StaekNode *s;
s=malloc (sizeof(StaekNode) );
(1)= x;
(2)= top;
(3);
return top;
}
LinkStaek Pop_LinkStack (LinkStacktop, datatype * x)
{ StaekNode *p;
if(top = = NULL) return NULL;
else{
* x =(4);
p = top;
(5);
free (p);
return top;
}
}
A.x=top.getData();top=top.getNext();
B.top=top.getNext();x=top.getData();
C.x=top.getNext();top=top.getData();
D.top.setNext(top);x=top.getData();
A.50
B.19
C.1
D.20