C语言与队列/链表

标签 c linked-list queue

有人可以解释下面的代码吗?我是 C 的新手,正在努力弄清楚。为什么我们最后有 queueNodeT?

typedef char queueElementT;

typedef struct queueNodeTag {
  queueElementT element;
  struct queueNodeTag *next;
} queueNodeT;

最佳答案

queueNodeT 是 typedef 语句试图创建的类型的名称。

另一种指定方式是:

struct queueNodeTag {
    ...
};
typedef struct queueNodeTag queueNodeT;

在 C(相对于 C++)中,“struct queueNodeTag”只是定义了一个名为“queueNodeTag”的结构。在 C++ 中 [你应该知道],这也将定义一个名为“queueNodeTag”的类型

创建指向结构的指针变量时,使用起来稍微短一些:

queueNodeT *my_pointer;

比:

struct queueNodeTag *my_pointer;

尾随的“T”只是一种编码约定,表示它是类型名称而不是变量。你可以使用其他人。我的是:

struct mystructname {
    ...
};
typedef struct mystructname mystructname_t;
typedef mystructname_t *mystructname_p;

使用 mystructname_p,您可以更改:

struct mystructname *my_pointer;
mystructname_t *my_pointer;

进入:

mystructname_p my_pointer;

“_t”相当常见。 “_p”是我的约定,但是,我相信其他约定将指向类型的指针定义为“p”,例如“pMystructName”。我更喜欢为此使用后缀 [和“蛇形”表示法,而不是您示例中的“驼峰”表示法]。

关于C语言与队列/链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32812942/

相关文章:

php - 将二进制数组转换为十进制字符串奇怪的行为

objective-c - 如何将 c 数组传递给 Objective-C 中的方法?

C - 尝试创建一个 LinkedList 指针数组

java - 是否可以为 HashMap 集创建队列?

c - C语言串口: read non-canonical mode

c++ - 使用数据结构的日历和待办事项列表

c - 我需要这部分代码的帮助

java - 队列的数组实现

python - 在这种情况下,queue.get() 在 python 中如何工作

c - 质数计算器。这些都正确吗?