生病

最近上海的天气晴晴雨雨冷冷热热,儿子感冒了,喉咙有痰的样子,还有发烧。

有一次看出儿子确实长大了,虽然各种不愿吃药,但是劝说威逼利诱之下,还是吃了药。

当然不顺心的时候,脾气还是异常暴躁,声嘶力竭的怒吼又能听到了。

暂时没有呕吐,但每次看到儿子咳嗽的样子,总是很担心,甚至听到胃里咕噜咕噜的声音。

检查链表有环

检查链表是否有环,貌似目前的标准答案是使用两根指针。下面是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,可以发现多处类似实现。