我被指派处理一些代码,但事先给了我一部分代码。它包括这部分代码:
typedef int ElementType;
struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
struct Node {
ElementType Element;
Position Next;
Position Previous;
};
我的理解是,
- 我们现在不用写 int 来写 ElementType 来定义一个整数的值。(困惑#1(
- 我们定义了一个名为 Node 的结构。(我不确定为什么这里没有定义它(。
- 我们
typedef
PtrToNode 作为名为 Node 的结构的指针。 - 我们
typedef
列为PtrToNote。这应该意味着List也是指向名为Node的结构的指针。此指针称为列表。(困惑#2( - 与数字 4 类似,但这个称为位置。
- 我们定义如何设置结构。在这种情况下,根据我们之前的定义,Element 应该是一个 int。下一个和上一个应该是位置的指针?但是,如果我要用列表更改位置,这将如何影响代码?
有人可以向我解释#1、2、4和6点吗?我是否正确理解了代码?
我们现在可以编写 ElementType 来定义一个整数,而不是写 int。(困惑#1(
这是正确的 - 例如:
int a = 50;
现在相当于
ElementType a = 50;
我们定义了一个名为 Node 的结构。(我不确定为什么这里没有定义它(。
这是(向前(声明一个名为 Node 的结构,而不是定义结构
我们类型化 PtrToNode 作为名为 Node 的结构的指针。
你在这里的理解也是正确的。因此,以下内容是等效的:
struct Node *x;
PtrToNode x;
我们键入 def List 作为 PtrToNote。这应该意味着List也是指向名为Node的结构的指针。此指针称为列表。(困惑#2(
List
和PtrToNode
表示相同的类型 - 以下示例都执行相同的操作:
struct Node *x;
PtrToNode x;
List x;
与数字 4 类似,但这个称为位置。
正确。
我们定义如何设置结构。在这种情况下,根据我们之前的定义,Element 应该是一个 int。下一个和上一个应该是位置的指针?但是,如果我要用列表更改位置,这将如何影响代码?
这是定义结构Node
。将Position
替换为List
对代码没有影响。到两种类型是兼容的。