0

来自编程珍珠:第 12 列:搜索:
有两个代码段:

    IntSetList(int maxelements, int maxval)
    {   sentinel = head = new node(maxval, 0);
        n = 0;
    }
    void report(int *v)
    {   int j = 0;
        for (node *p = head; p != sentinel; p = p->next)
            v[j++] = p->val;
    }

我很好奇哨兵报告功能中是如何工作的?

如有需要,请查看完整的源代码

谢谢,

4

1 回答 1

1

sentinel只是列表中最后一个指针预期具有的值;它是next成员不指向任何东西时的价值。它被初始化为指向列表中的第一个“虚拟”节点;新项目在开头插入,因此哨兵漂移到最后。

于 2012-08-03T03:37:44.183 回答