acl4のページ0002

(1)

#if (a_Version >= 1)
    #define DoublyLinkList          a_DoublyLinkList
    #define DoublyLinkList_ini      a_DoublyLinkList_ini
    #define DoublyLinkList_insTail  a_DoublyLinkList_insTail
    #define DoublyLinkList_insHead  a_DoublyLinkList_insHead
    #define DoublyLinkList_rmv      a_DoublyLinkList_rmv
#endif
a_class(a_DoublyLinkList) { a_DoublyLinkList *prv, *nxt; };
a_static void a_DoublyLinkList_ini(a_DoublyLinkList *w) { w->prv = w->nxt = w; }

a_static void a_DoublyLinkList_insTail(a_DoublyLinkList *w, a_DoublyLinkList *tgt)
{
    a_DoublyLinkList *lst = w->prv;
    lst->nxt = tgt;
    tgt->prv = lst;
    tgt->nxt = w;
    w  ->prv = tgt;
}

a_static void a_DoublyLinkList_insHead(a_DoublyLinkList *w, a_DoublyLinkList *tgt)
{
    a_DoublyLinkList *hed = w->nxt;
    w  ->nxt = tgt;
    tgt->prv = w;
    tgt->nxt = hed;
    hed->prv = tgt;
}

a_static void a_DoublyLinkList_rmv(a_DoublyLinkList *tgt)
{
    a_DoublyLinkList *prv = tgt->prv;
    a_DoublyLinkList *nxt = tgt->nxt;
    prv->nxt = nxt;
    nxt->prv = prv;
}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS