📅  最后修改于: 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 ;
}
此段代码定义了一个名为Stack
的结构体类型,该结构体类型包含一个名为data
的整数数组以及一个名为top
的整数变量。
此段代码第二行的“# define MAX 100 ”定义了一个常量MAX
,其值为100,该常量可以用在代码其他部分中,起到常量化的作用。
此段代码第三行的“typedef Stack * STACK”语句定义了一个名为STACK
的新类型,该类型指向动态分配的Stack
结构体类型。
此段代码第十行的“STACK newStack()”函数是一个工厂方法,用于创建并返回一个指向Stack
类型的动态分配内存空间的指针。
stack1
的Stack
类型指针变量。STACK stack1 = newStack() ;
stack1
中弹出第一个元素,并将其存储为int
类型变量value1
的值。int value1 = stack1 -> data[stack1 -> top--] ;
stack2
的Stack
类型指针变量,并将value1
推入stack2
的栈顶。STACK stack2 = newStack() ;
stack2 -> data[++stack2 -> top] = value1 ;