Annotation of researchv9/cmd/cfront/CC/common/list.h, revision 1.1

1.1     ! root        1: 
        !             2: struct link {
        !             3:        link* next;
        !             4:        common* p;
        !             5:        link(common* pp, link* nn) { p=pp; next=nn; }
        !             6: };
        !             7: 
        !             8: class list : public common {   /* an element can occur more than once */
        !             9:        link* head;
        !            10:        link* tail;
        !            11: public:
        !            12:        list() { head = tail = 0; }
        !            13:        list(common& oo) { head = tail = new link(&oo, 0); }
        !            14:        ~list();
        !            15: 
        !            16:        void    add(common& oo) {
        !            17:                        head = new link(&oo,head);
        !            18:                        if (tail == 0) tail=head;
        !            19:                }
        !            20: 
        !            21:        void    addlast(common& oo) {
        !            22:                if (tail==0)
        !            23:                        head = tail = new link(&oo,0);
        !            24:                else
        !            25:                        tail = tail->next = new link(&oo,0);
        !            26:        }
        !            27: 
        !            28:        common* remove() {
        !            29:                if (head) {
        !            30:                        common* p = head->p;
        !            31:                        if (head == tail)
        !            32:                                head = tail = 0;
        !            33:                        else
        !            34:                                head=head->next;
        !            35:                        return p;
        !            36:                }
        !            37:                else
        !            38:                        return 0;
        !            39:        }
        !            40: 
        !            41:        common* remove(common& oo);
        !            42:        common* first() { return head?head->p:0; }
        !            43:        common* last()  { return tail?tail->p:0; }
        !            44:        int     empty() { return head!=0; }
        !            45: };
        !            46: 
        !            47: class set : public list {      /* unique elements */
        !            48:        common  remove();
        !            49: public:
        !            50:        set();
        !            51:        set(common&);
        !            52:        ~set();
        !            53: 
        !            54:        int     empty();
        !            55:        int     insert(common&);
        !            56:        common* remove(common&);
        !            57:        common* find(char*);
        !            58:        common* find(common&);
        !            59:        int     no_of_mem();
        !            60: };
        !            61: 
        !            62: struct dlink {
        !            63:        dlink* pre, *suc;
        !            64:        common* p;
        !            65:        dlink(dlink* pr, dlink* su, common* pp) { pre=pr; suc=su; p=pp; }
        !            66: }; 
        !            67: 
        !            68: class dlist : public common {
        !            69:        dlink* head;
        !            70: public:
        !            71:        dlist();
        !            72:        dlist(common&);
        !            73:        ~dlist();
        !            74: 
        !            75:        void    insert();
        !            76:        common* remove();
        !            77:        common* remove(common&);
        !            78:        common* curr();
        !            79:        common* next();
        !            80:        common* prev();
        !            81: };
        !            82: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.