数据结构

栈结构的元素个数是()。A、不变的B、可变的C、任意的D、0

题目

栈结构的元素个数是()。

  • A、不变的
  • B、可变的
  • C、任意的
  • D、0
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。两个栈均从两端向中间增长。试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。双栈数据结构的定义如下:

Typedef struct

{int top[2],bot[2]; //栈顶和栈底指针

SElemType *V; //栈数组

int m; //栈最大可容纳元素个数

}DblStack


参考答案:
  两栈共享向量空间,将两栈栈底设在向量两端,初始时,左栈顶指针为-1,右栈顶为m。两栈顶指针相邻时为栈满。两栈顶相向、迎面增长,栈顶指针指向栈顶元素。
  [算法描述]
  (1) 栈初始化
  int Init()
  {S.top[0]=-1;
  S.top[1]=m;
  return 1; //初始化成功
  }
  (2) 入栈操作:
  int push(stk S ,int i,int x)
  ∥i为栈号,i=0表示左栈,i=1为右栈,x是入栈元素。入栈成功返回1,失败返回0
  {if(i<0||i>1){ cout<<“栈号输入不对”<  if(S.top[1]-S.top[0]==1) {cout<<“栈已满”<  switch(i)
  {case 0: S.V[++S.top[0]]=x; return(1); break;
  case 1: S.V[--S.top[1]]=x; return(1);
  }
  }∥push
  (3) 退栈操作
  ElemType pop(stk S,int i)
  ∥退栈。i代表栈号,i=0时为左栈,i=1时为右栈。退栈成功时返回退栈元素
  ∥否则返回-1
  {if(i<0 || i>1){cout<<“栈号输入错误”<  switch(i)
  {case 0: if(S.top[0]==-1) {cout<<“栈空”<  else return(S.V[S.top[0]--]);
  case 1: if(S.top[1]==m { cout<<“栈空”<  else return(S.V[S.top[1]++]);
  }∥switch
  }∥算法结束
  (4) 判断栈空
  int Empty();
  {return (S.top[0]==-1 && S.top[1]==m);
  }
  [算法讨论]
  请注意算法中两栈入栈和退栈时的栈顶指针的计算。左栈是通常意义下的栈,而右栈入栈操作时,其栈顶指针左移(减1),退栈时,栈顶指针右移(加1)。

第2题:

栈与一般的线性表的区别在于()。

:A数据元素的类型不同

B运算是否受限制

C数据元素的个数不同

D逻辑结构不同


参考答案:B

第3题:

设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。则栈中的元素个数为()。

A.30

B.29

C.20

D.19


正确答案:C

第4题:

如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是 ( )

A.栈

B.队列

C.树

D.图


正确答案:C
解析:在树中,除了根结点和叶子结点外,其余结点都仅有一个直接前驱而且有一个或多个直接后继。而根结点没有直接前驱但有一个或多个直接后继,叶子结点有一个直接前驱却没有直接后继。

第5题:

在一个可存放n个数据元素的顺序栈中,假设以高地址端为栈底,以top为栈顶指针,当向栈中压入一个数据元素时,top的变化是()。

A、不变

B、top=n

C、top++

D、top--


正确答案:D

第6题:

POP(PUSH(S,A))的运算步骤是首先将元素A压入栈中,若栈S满,出现上溢现象,否则将元素A压入栈顶,且元素个数加1,然后做POP(S)运算,将栈顶元素弹出,且元素个数减一。( )

此题为判断题(对,错)。


正确答案: 正确

第7题:

假设用-个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有的元素个数为( )。

A.50

B.19

C.1

D.20


正确答案:B
当前栈中的所有元素的个数就是用栈底指针减去栈顶指针。

第8题:

设栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的入栈与退栈操作后,top=20,则栈中的元素个数为()。

A.31

B.30

C.21

D.20


正确答案:A

第9题:

如果以链表为栈的存储结构,则退栈操作是______。

A.必须判别栈是否满

B.必须判别栈是否空

C.判别栈元素的类型

D.刘栈不作任何判别


正确答案:B

第10题:

若需将一个栈S中的元素逆置,则以下处理方式中正确的是(63)。

A.将栈S中元素依次出栈并入栈T,然后将栈T中元素依次出栈并进入栈S

B.直接交换栈顶元素和栈底元素

C.将栈S中元素依次出栈并入队,然后使该队列元素依次出队并进入栈S

D.直接交换栈顶指针和栈底指针


正确答案:C
解析:栈的运算特点是先入后出。栈的操作一般为初始化栈、元素入栈、元素出栈、判断栈是否为空、取栈顶元素的副本等,对栈中元素的操作应采用栈结构提供的操作接口实现。对于选项A,将栈S中元素依次出栈并入栈T后,栈T中元素的排列正好是原栈S中元素的逆序,再将栈T中元素依次出栈并进入栈S,则栈S中的元素以原次序放置,不能实现栈S中元素逆置的要求。对于选项B,将栈S中元素依次出栈并入队后,队头元素为原栈S的栈顶元素,队尾元素尾原栈S的栈底元素。队列的操作特点是先入先出,因此使该队列元素依次出队并进入栈S后,队头元素就进入栈底,队尾元素称为栈顶,因此可实现将栈S中元素逆置的效果。对于选项C,直接交换栈顶元素与栈底元素既不符合栈结构的操作要求,也达不到逆置栈中元素的要求。对于选项D,直接交换栈顶指针和栈底指针不符合栈结构的操作要求。

更多相关问题