参考答案和解析
参考答案:
  [算法描述]
  #define maxsize 栈空间容量
  void InOutS(int s[maxsize])
  //s是元素为整数的栈,本算法进行入栈和退栈操作。
  {int top=0; //top为栈顶指针,定义top=0时为栈空。
  for(i=1; i<=n; i++) //n个整数序列作处理。
  {cin>>x); //从键盘读入整数序列。
  if(x!=-1) // 读入的整数不等于-1时入栈。
  {if(top==maxsize-1){cout<<“栈满”<  else s[++top]=x; //x入栈。
  }
  else //读入的整数等于-1时退栈。
  {if(top==0){ cout<<“栈空”<  else cout<<“出栈元素是”<< s[top--]<  }
  }//算法结束。
更多“设从键盘输入一整数的序列:a1, a2, a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。 ”相关问题
  • 第1题:

    4个元素a1,a2,a3和a4依次入栈,人栈过程中允许栈顶元素出栈。假设某一时刻栈的状态是:则不可能的出栈序列是

    A.a4,a3,a2,a1

    B.a3,a2,a4,a1

    C.a3,a1,a4,a2

    D.a3,a4,a2,a1


    正确答案:C
    解析:既然某一时刻栈内的顺序是a3,a2,a1(a1在栈底),则不管中间是否有别的数据进出栈,它们的出栈顺序总是不能颠倒的,而答案C中,a1竟在a2之前出了栈,这是不可能的。

  • 第2题:

    设将整数1、2、3、4依次进栈,只要出栈时栈非空,则可将出栈操作按任何次序夹人其中;请回答下述问题:

    1.当人、出栈次序为Push(1),Pop(),Push(2),Push(3),Pop(),Push(4),Pop(),出栈的数字序列为何?(这里Push(i)表示i进栈,Pop()表示出栈)(26)

    2.能否得到出栈序列1、4、2、3和1、4、3、2?答案为(27)。

    3.请分析研究1、2、3、4的24种排列中,(28)序列是可以通过相应的入、出栈操作得到的。

    A.1,3,4

    B.1,4,2,3

    C.1,4,3

    D.3,4,1


    正确答案:A

  • 第3题:

    设将整数1,2,3,4,5依次进栈,最后都出栈,出栈可以在任何时刻(只要栈不空)进行,则出栈序列不可能是

    A.23415

    B.54132

    C.23145

    D.15432


    54132

  • 第4题:

    四个元素a1、a2、a3和a4依次通过一个栈,在入栈过程中允许栈顶元素出栈。假设某一时刻栈的状态如下:

    则不可能的出栈序列是______。

    A.a4,83,a2,a1

    B.a3,a2,a4,a1

    C.a3,a1,a4,a2

    D.a3,a4,82,a1


    正确答案:C

  • 第5题:

    1、设将整数1,2,3,4,5依次进栈,最后都出栈,出栈可以在任何时刻(只要栈不空)进行,则出栈序列不可能是

    A.23415

    B.54132

    C.23145

    D.15432


    54132