使用数组与c++进行堆栈

xe55xuns  于 2023-04-11  发布在  其他
关注(0)|答案(1)|浏览(101)

我正在学习使用数组的堆栈,我在理解代码方面有问题。

typedef struct tagNode
{
    int Data;
} Node;

typedef struct tagArrayStack
{
    int   Capacity;
    int   Top;
    Node* Nodes;
} ArrayStack;

void  AS_CreateStack(ArrayStack** Stack, int Capacity)
{
    (*Stack)           = (ArrayStack*)malloc(sizeof(ArrayStack));
    (*Stack)->Nodes    = (Node*)malloc(sizeof(Node)*Capacity);
    (*Stack)->Capacity = Capacity;
    (*Stack)->Top = -1;
}

void AS_Push(ArrayStack* Stack, ElementType Data)
{
    Stack->Top++;
    Stack->Nodes[Stack->Top].Data = Data;
}

这是密码我知道它是怎么运作的
但是我理解不了这个. Stack-〉Nodes[Stack-〉Top].Data为什么代码使用'.' Data?这个的含义和名称是什么?
我不知道".“在C语言中是如何工作的

eagi6jfj

eagi6jfj1#

Stack是指向ArrayStack的指针。
Stack->NodesStack指向的ArrayStack中的Nodes成员。它是指向Node的指针,特别是指向Node元素数组中的第一个Node
Stack->Nodes[Stack->Top]Node元素数组中索引为Stack->Top的元素。
Stack->Nodes[Stack->Top].DataNode元素的Data成员。
Stack->Nodes[Stack->Top].Data = Data;Stack->Nodes指向的数组中索引为Stack->TopNode元素的Data成员的值设置为Data的值,该值是函数的参数。
Data在这个语句中有两个含义。在.之后,它引用结构的成员。在=的右侧,它本身引用函数参数。

相关问题