【C程序】#includestdio.h/*此处为栈类型及其基本操作的定义,省略*/int main(){STACK station;int state[1000];int n; /*车厢数*/int begin, i, j, maxNo; /*maxNo为A端正待入栈的车厢编号*/printf("请输入车厢数:");scanf("%d",n);printf(“请输入需要判断的车厢编号序列(以空格分隔):”);if(n<1)return-1;for (i=0; in; i++) /*读入需要驶出的车厢编号序列,存入数组state[]*/scanf("%d",state[i]);(1) ; /*初始化栈*/maxNo=1;for(i=0; i<n; ){ /*检查输出序列中的每个车厢号state[i]是否能从栈中获取*/if( (2) ){ /*当栈不为空时*/if (state[i]=Top(station)) { /*栈顶车厢号等于被检查车厢号*/printf("%d",Top(station));Pop(station);i++;}elseif ( (3) ) {printf(“error\n”);return 1;}else{begin= (4) ;for(j=begin+l;j =state [i];j++){Push(station, j);}}}else{ /*当栈为空时*/begin=maxNo;for(j=begin; j=state[i];j++) {Push(station, j);}maxNo= (5) ;}}printf("OK");return 0;}

【C程序】

#include<stdio.h>

/*此处为栈类型及其基本操作的定义,省略*/

int main(){

STACK station;

int state[1000];

int n; /*车厢数*/

int begin, i, j, maxNo; /*maxNo为A端正待入栈的车厢编号*/

printf("请输入车厢数:");

scanf("%d",&n);

printf(“请输入需要判断的车厢编号序列(以空格分隔):”);

if(n<1)return-1;

for (i=0; i<n; i++) /*读入需要驶出的车厢编号序列,存入数组state[]*/

scanf("%d",&state[i]);

(1) ; /*初始化栈*/

maxNo=1;

for(i=0; i<n; ){ /*检查输出序列中的每个车厢号state[i]是否能从栈中获取*/

if( (2) ){ /*当栈不为空时*/

if (state[i]=Top(station)) { /*栈顶车厢号等于被检查车厢号*/

printf("%d",Top(station));

Pop(&station);i++;

else

if ( (3) ) {

printf(“error\n”);

return 1;

else{

begin= (4) ;

for(j=begin+l;j <=state [i];j++){

Push(&station, j);

}

else{ /*当栈为空时*/

begin=maxNo;

for(j=begin; j<=state[i];j++) {

Push(&station, j);

maxNo= (5) ;

printf("OK");

return 0;


相关考题:

( 15 )请将下列栈类 Stack 补充完整class Stack{private:int pList[100]; // int 数组 , 用于存放栈的元素int top; // 栈顶元素 ( 数组下标 )public:Stack():top(0){}void Push(const int item); // 新元素 item 压入栈int Pop(void); // 将栈顶元素弹出栈};void Stack::Push(const int item){if(top == 99) // 如果栈满 , 程序终止exit(1);top++; // 栈顶指针增 1___________;}int Stack::Pop(){if(top0) // 如果栈空 , 程序终止exit(1);return pList[top--];}

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【说明】以下程序的功能是设计一个栈类stack<T>,并建立一个整数栈。【程序】include < iostream. h >include < stdlib. 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))tout<<(5)<<" ";cout< < endl;}

假定栈用顺序的方式存储,栈类型stack定义如下:TYPE stack=RECORDA: ARRAY[1..M0OF datatype;t:0..M0;END;下面是栈的一种基本运算的实现:PROCEDURE xxxx(VAR s:stack)BEGINIF s.t=0THEN print('underflow')ELSE s.t:=s.t-1;END;请问这是栈的哪种基本运算?( )。A) 栈的推入B) 栈的弹出C) 读栈顶元素D) 将栈置为空栈A.B.C.D.

请将下列栈类Stack的横线处补充完整。class Stack{private:int pList[100]; ∥int数组,用于存放栈的元素int top; ∥栈顶元素(数组下标)public:Stack():top(0){}void Push(const int item); ∥新元素item

阅读下列说明和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<<2int 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)

试题七(共 15 分)阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】现有 n(n 1000)节火车车厢,顺序编号为 1,2,3,...,n,按编号连续依次从 A方向的铁轨驶入,从 B 方向铁轨驶出,一旦车厢进入车站(Station)就不能再回到 A方向的铁轨上;一旦车厢驶入 B 方向铁轨就不能再回到车站,如图 7-1所示,其中 Station 为栈结构,初始为空且最多能停放 1000 节车厢。下面的 C 程序判断能否从 B 方向驶出预先指定的车厢序列,程序中使用了栈类STACK,关于栈基本操作的函数原型说明如下:void InitStack(STACK *s):初始化栈。void Push(STACK *s,int e): 将一个整数压栈,栈中元素数目增 1。void Pop(STACK *s):栈顶元素出栈,栈中元素数目减 1。int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。int IsEmpty(STACK s):若是空栈则返回 1,否则返回 0。【C 程序】includestdio.h/*此处为栈类型及其基本操作的定义,省略*/int main( ){STACK station;int state[1000];int n; /*车厢数*/int begin, i, j, maxNo; /*maxNo 为 A端正待入栈的车厢编号*/printf("请输入车厢数: ");scanf("%d",n);printf("请输入需要判断的车厢编号序列(以空格分隔) : ");if (n 1) return -1;for (i = 0; in; i++) /* 读入需要驶出的车厢编号序列,存入数组 state[] */scanf("%d",state[i]);(1) ; /*初始化栈*/maxNo = 1;for(i = 0; i n; ){/*检查输出序列中的每个车厢号 state[i]是否能从栈中获取*/if ( (2) ){/*当栈不为空时*/if (state[i] == Top(station)){ /*栈顶车厢号等于被检查车厢号*/printf("%d ",Top(station));Pop(station); i++;}elseif ( (3) ){printf("error\n");return 1;}else {begin = (4) ;for(j = begin+1; j=state[i]; j++) {Push(station, j);}}}else { /*当栈为空时*/begin = maxNo;for(j = begin; j=state[i]; j++){Push(station, j);}maxNo = (5) ;}}printf("OK");return 0;}

(12)假定栈用顺序的方式存储,栈类型 stack定义如下:TYPE stack=RECORDA:ARRAY[l..m0] OF datatype;t:O..m0;END;下面是栈的一种基本运算的实现:PROCEDURE xxxx(VAR s:satack);BEGINIF s.t=0THEN print(‘underflow’)ELSE s.t:=s.t-1;END;请问这是栈的哪一种基本运算?A) 栈的推入B)栈的弹出C)读栈顶元素D)将栈置为空栈

开始往输入串末尾和分析栈stack中放“#”,然后把文法开始符号压栈。预测分析程序总是按_________和________。A.stack栈顶符号X 最后的输入符号bB.stack栈顶符号X 当前输入符号aC.stack栈尾符号X 当前输入符号aD.stack栈尾符号X 最后的输入符号b

int main() { } 其中的int含义是_____。A.main函数的返回值类型B.定义变量类型为intC.定义常量类型为intD.强制返回值为0