我正在研究一个循环双链表,其中包含具有 99 标准的 C 语言哨兵。 我被允许用于类的标头是stdio.h,stdlib.h和assert.h。
哨兵是一个结构体,结构有一个值数据成员,它是一个双精度值。 我想知道是否有双打的 NULL 替代品? 似乎 NULL 可用于整数数据类型,但不能用于双精度数据类型。 我尝试使用 Nan 和 NAN,但编译器不接受这些。 我考虑使用任意数字,但想知道在这种特定情况下是否有 NULL 的特定替身?
NaN 是适合您寻求的目的的值。C 提供了一个符号NAN
可用于表示 NaN。但是,NAN
的定义在 <math.h>
中提供,这不在允许您使用的标头中。相反,您可以在包含 <stdlib.h>
之后通过 double NaN = strtod("NAN", 0);
获得 NaN。(感谢 chux 的提醒。
分配要求您在double
中使用哨兵值而不允许您访问<math.h>
似乎很奇怪。您可能应该在结构的指针成员中使用 null 指针,而不是尝试使用 double
来标记列表的末尾。或者,如果不是空指针,则向结构中添加另一个成员以用于标记结束。或者通过记住您进入列表的位置来确定结尾 - 当您遍历循环列表回到起点时,您已经完全遍历了列表。