阅读下列说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】栈(Stack)结构是计算机语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶(Stock Top),而另一端称为栈底(Stock Bottom)。栈的基本操作包括:创建栈(NewStack)、判断栈是否为空(IsEmpty)、判断栈是否已满(IsFull)、获取栈顶数据(Top)、压栈/入栈(Push)、弹栈/出栈(Pop)。当设计栈的存储结构时,可以采取多种方式。其中,采用链式存储结构实现的栈中各数据项不必连续存

题目

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


相似考题

1.试题四阅读以下说明和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");}

3.阅读以下说明和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”);}

4.●试题二阅读以下说明和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)处的字句写在对应栏内。【说明】栈(Stack)结构是计算机语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶(Stock Top),而另一端称为栈底(S”相关问题
  • 第1题:

    栈(Stack)是限定仅在(18)进入插入或删除操作的线性表。对栈来说,表尾端称为(18);表头端称为(18)。

    A.表头 栈顶(top),栈底(bottom)

    B.表头,栈底(bottom)栈顶(top)

    C.表尾,栈顶(top)栈底(bottom)

    D.表尾,栈底(bottom)栈顶(top)


    正确答案:C
    解析:此题考察对栈(Stack)定义的理解。

  • 第2题:

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

    }


    正确答案:(1)Max-1 (2)-1 (3)st.push(a[i]) (4)!st.stackempty() (5)st.pop()
    (1)Max-1 (2)-1 (3)st.push(a[i]) (4)!st.stackempty() (5)st.pop() 解析:本题用类模板方式定义一个栈类,其中有两个私有数据成员:s[](存放栈元素)和top(栈顶元素下标),以及3个公有成员函数: push(元素入栈)、Pop(元素出栈)和stackempty(判断栈是否为空)。
    在函数push()中,首先要判断是否栈满。栈的大小为Max,数组的下标从。开始,所以栈满的条件是栈顶元素下标为Max-1,所以(1)空应填入“Max-1”。同样,在函数pop()中,首先要判断是否为空栈,由于栈顶初始化为-1,所以(2)空应填入“-1”。
    在主函数中,先进行入栈操作,所以(3)空应填入“st.push(a [i])”。然后进行出栈操作,判断栈是否为空,调用对象的函数stackempty(),所以(4)空应填入“!st.stackempty()”。(5)空处调用出栈函数,所以应填入“st.pop()”。

  • 第3题:

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


    A A。【解析】栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。

  • 第4题:

    栈中允许进行插入和删除的一端称为( )。

    A.栈顶

    B.栈底

    C.栈端

    D.栈尾


    正确答案:A
    A。【解析】栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。

  • 第5题:

    阅读下列函数说明和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;

    }

    }


    正确答案:(1)s->data (2)s->next (3)top=s (4)top->data (5)top=top->next
    (1)s->data (2)s->next (3)top=s (4)top->data (5)top=top->next 解析:(1)~(3):LinkStack Push_LinkStack(Link- Stacktop,datmype x)函数的功能是将x压入栈顶,因此首先为其创建一个节点s,使s->data等于x,使s-> next指向原来的栈顶top,最后将,作为新栈的栈顶并返回。
    (4)~(5):LinkStack Pop_LinkStaek(LinkStacktop, datatype*x)的功能是弹出原栈顶元素,返回这个元素以及新栈的指针。当原链栈不空时,取出栈顶元素top ->data赋给参量*x作为返回值,将top->next更新为新栈的栈顶,并且释放原来top节点的空间。