网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

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


参考答案

更多 “ 阅读下列说明和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) ” 相关考题
考题 试题四阅读以下说明和C代码,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n, int B)的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:#define MAXSIZE 32typedef struct {int *elem; /* 栈的存储区 */int max; /* 栈的容量,即栈中最多能存放的元素个数 */int top; /* 栈顶指针 */}Stack;[C代码]int InitStack(Stack *S, int n) /* 创建容量为n的空栈 */{ S-elem = (int *)malloc(n * sizeof(int));if(S-elem == NULL) return -1;S-max = n; (1) = 0 ; return 0;}int Push(Stack *S, int item) /* 将整数item压入栈顶 */{ if(S-top == S-max){ printf("Stack is full!\n"); return -1;}(2) = item ; return 0;}int StackEmpty(Stack S) { return (!S.top) ? 1 : 0; } /* 判断栈是否为空 */int Pop(Stack *S) /* 栈顶元素出栈 */{ if(!S-top) { printf("Pop an empty stack!\n"); return -1;}return (3) ;}void MultibaseOutput(long n, int B){ int m; Stack S;if (InitStack(S, MAXSIZE)) {printf("Failure!\n"); return;}do {if (Push(S, (4) )) {printf("Failure!\n"); return;}n = (5) ;}while(n != 0);while(!StackEmpty(S)) { /* 输出B进制的数 */m = Pop(S);if(m 10) printf("%d", m); /* 小于10,输出数字 */else printf("%c", m + 55); /* 大于或等于10,输出相应的字符 */}printf("\n");}

考题 ●试题二阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:#define MAXSIZE 32typedef struct{int *elem;/*栈的存储区*/int max; /*栈的容量,即栈中最多能存放的元素个数*/int top;/*栈顶指针*/}Stack;【代码】int InitStack(Stack *S,int n)/*创建容量为n的空栈*/{S->elem=(int*)malloc(n *sizeof(int));if(S->elem==NULL)return-1;S->max=n; (1) =0;return 0;}int Push (Stack *s,int item)/*将整数item压入栈顶*/{if(S->top==S->max){printf(″Stack is full!\n″);return-1;}(2) =item;return 0;}int StackEmpty(Stack S){return(! S.top)?1∶0;}/*判断栈是否为空*/int Pop(Stack *S)/*栈顶元素出栈*/{if(! S->top){printf(″Pop an empty stack!\n″);return -1;}return (3) ;}void MultibaseOutput(long n,int B){int m;Stack S;if(InitStack(S,MAXSIZE)){printf(″Failure!\n″);return;}do {if(Push(S, (4) )){printf(″Failure!\n″);return;}n= (5) ;}while(n !=0);while(! StackEmpty(S)){/*输出B进制的数*/m=Pop( S);if(m<10)printf(″%d″,m);/*小于10,输出数字*/else printf(″%c″,m+55);/*大于或等于10,输出相应的字符*/}printf(″\n″);}

考题 ●试题七阅读以下说明和C++程序,将应填入(n)处的字句写在答题纸的对应栏内。【说明】以下程序的功能是设计一个栈类stackT,并建立一个整数栈。【程序】#includeiostream.h#includestdliB.hconst int Max=20;∥栈大小templateclass Tclass stack{∥栈元素数组T s[Max];∥栈顶下标int top;public:stack(){top=-1;∥栈顶初始化为-1}void push(const T &item);∥item入栈T pop();∥出栈int stackempty()const;∥判断栈是否为空};templateclass Tvoid stackT::push(const T &item){if(top== (1) ){cout"栈满溢出"endl;exit (1) ;}top++;s[top]=item;}templateclass TT stackT::pop(){T temp;if(top== (2) ){cout″栈为空,不能出栈操作″endl;exit (1) ;}temp=s[top];top--;return temp;}templateclass Tint stackT::stackempty()const{return top==-1;}void main(){stackintst;int a[]={1,2,3,4,5 };cout"整数栈"endl;cout"入栈序列:"endl;for(int i=0;i4;i++){couta[i]" ";(3) ;}coutendl"出栈序列:";while( (4) )cout (5) " ";coutendl;}

考题 阅读以下说明和C程序代码,将应填入______处的语句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:define MAXSIZE 32typedef struct{int * elem; /* 栈的存储区 */int max; /* 栈的容量,即栈中最多能存放的元素个数 */int top; /* 栈顶指针 */}Stack;[C代码]int InitStack(Stack * S,int n) / * 创建容量为n的空栈 */{ S->elem=(int *)malloc(n * sizeof(int));if(S->elem==NULL)return-1;S->max=n; (1)=O;return 0;}int Push(Stack * S,int item) / * 将整数item压入栈顶 * /{ if(S->top==S->max){ printf(“Stack is full! \n”);return-1;}(2)=item;return 0;}int StackEmpty(StackS) {return (! S.top)? 1:0;} / * 判断栈是否为空 * /int Pop(Stack *S ) / * 栈顶元素出栈 * /{ if(! S->top){printf(“Pop an empty stack! \n”);return-1;}return (3);}void MultibaseOutput(long n,int B){ int m;StackS;if (InitStack(S,MAXSIZE)){printf(“Failure! \n”);return;}do {if(Push(S, (4) )){printf(“Failure! \n”);return;}n=(5);}while(n!=0);while(! StackEmpty(S)){ / * 输出B进制的数 * /m=Pop(S);if(m<10)printf(“%d”,m); / * 小于10,输出数字 * /else printf(“%c”,m+55); / * 大于或等于10,输出相应的字符 * /}printf(“\n”);}

考题 栈(Stack)是限定仅在(18)进入插入或删除操作的线性表。对栈来说,表尾端称为(18);表头端称为(18)。A.表头 栈顶(top),栈底(bottom)B.表头,栈底(bottom)栈顶(top)C.表尾,栈顶(top)栈底(bottom)D.表尾,栈底(bottom)栈顶(top)

考题 栈中允许进行插入和删除的一端称为( )。A.栈顶B.栈底C.栈端D.栈尾

考题 阅读以下说明和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;}

考题 阅读下列函数说明和C函数,将应填入(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;}}

考题 77、栈(stack)中允许插入和删除的一端称为()(top)。