📜  门| GATE-CS-2009 |第 42 题(1)

📅  最后修改于: 2023-12-03 14:58:28.057000             🧑  作者: Mango

题目概述

本题为GATE-CS-2009的第42题,要求学生利用给定的C程序代码片段,回答若干涉及C语言中函数指针、结构体和数组操作的问题。

代码片段
# define MAX 100 
typedef struct { 
    int data[MAX] ; 
    int top ; 
} Stack ; 
typedef Stack * STACK ; 
STACK newStack() { 
    STACK S = (STACK) malloc(sizeof(Stack)) ; 
    S -> top = -1 ; 
    return S ; 
}
题目回答
问题1:此段代码处定义了什么类型的数据结构?

此段代码定义了一个名为Stack的结构体类型,该结构体类型包含一个名为data的整数数组以及一个名为top的整数变量。

问题2:此段代码第二行的“# define MAX 100 ”的作用是什么?

此段代码第二行的“# define MAX 100 ”定义了一个常量MAX,其值为100,该常量可以用在代码其他部分中,起到常量化的作用。

问题3:此段代码第三行的“typedef Stack * STACK”语句的作用是什么?

此段代码第三行的“typedef Stack * STACK”语句定义了一个名为STACK的新类型,该类型指向动态分配的Stack结构体类型。

问题4:此段代码第十行的“STACK newStack()”函数的作用是什么?

此段代码第十行的“STACK newStack()”函数是一个工厂方法,用于创建并返回一个指向Stack类型的动态分配内存空间的指针。

问题5:请编写一段代码,利用newStack()函数创建一个名为stack1Stack类型指针变量。
STACK stack1 = newStack() ;
问题6:请编写一段代码,利用栈的先进后出特性,从stack1中弹出第一个元素,并将其存储为int类型变量value1的值。
int value1 = stack1 -> data[stack1 -> top--] ;
问题7:请编写一段代码,利用newStack()函数创建一个名为stack2Stack类型指针变量,并将value1推入stack2的栈顶。
STACK stack2 = newStack() ;
stack2 -> data[++stack2 -> top] = value1 ;