最近上海的天气晴晴雨雨冷冷热热,儿子感冒了,喉咙有痰的样子,还有发烧。
有一次看出儿子确实长大了,虽然各种不愿吃药,但是劝说威逼利诱之下,还是吃了药。
当然不顺心的时候,脾气还是异常暴躁,声嘶力竭的怒吼又能听到了。
暂时没有呕吐,但每次看到儿子咳嗽的样子,总是很担心,甚至听到胃里咕噜咕噜的声音。
最近上海的天气晴晴雨雨冷冷热热,儿子感冒了,喉咙有痰的样子,还有发烧。
有一次看出儿子确实长大了,虽然各种不愿吃药,但是劝说威逼利诱之下,还是吃了药。
当然不顺心的时候,脾气还是异常暴躁,声嘶力竭的怒吼又能听到了。
暂时没有呕吐,但每次看到儿子咳嗽的样子,总是很担心,甚至听到胃里咕噜咕噜的声音。
检查链表是否有环,貌似目前的标准答案是使用两根指针。下面是Emacs中的实现,亮点在指针变量命名。
/* Signal `error' with message S, and additional arg ARG.
If ARG is not a genuine list, make it a one-element list. */
void
signal_error (const char *s, Lisp_Object arg)
{
Lisp_Object tortoise, hare;
hare = tortoise = arg;
while (CONSP (hare))
{
hare = XCDR (hare);
if (!CONSP (hare))
break;
hare = XCDR (hare);
tortoise = XCDR (tortoise);
if (EQ (hare, tortoise))
break;
}
if (!NILP (hare))
arg = Fcons (arg, Qnil); /* Make it a list. */
xsignal (Qerror, Fcons (build_string (s), arg));
}
在Emacs源码中搜索tortoise,可以发现多处类似实现。