Annotation of researchv10no/cmd/cfront/libstring/test3.c, revision 1.1

1.1     ! root        1: /* sort standard input and print unique word count */
        !             2: #include "pair.h"
        !             3: #include "list.h"
        !             4: 
        !             5: listdeclare(pairST)
        !             6: listoutimplement(pairST)
        !             7: pairST_list    sort(pairST_list);
        !             8: 
        !             9: main()
        !            10: {
        !            11:        String  s;
        !            12:        pairST_list     myList;
        !            13:        /* input */
        !            14:        while (cin >> s)
        !            15:                myList.put(new pair(s,1));
        !            16:        myList = sort(myList);
        !            17:        /* print result */
        !            18:        cout << myList << "\n";
        !            19: }
        !            20: 
        !            21: pairST_list
        !            22: sort(pairST_list myList)
        !            23: {
        !            24:        /* (bubble) sort */
        !            25:        int swapFlag;
        !            26:        if (myList)
        !            27:                do {
        !            28:                        swapFlag = FALSE;
        !            29:                        pairST_list_iterator    it(myList);
        !            30:                        pairST  x;
        !            31:                        pairST  y;
        !            32:                        while ( it.nextX(x) && it.peekX(y) )
        !            33:                                if ( x->word > y->word ) {
        !            34:                                        it.remove();
        !            35:                                        it.next();
        !            36:                                        it.r_insert(x);
        !            37:                                        swapFlag = TRUE;
        !            38:                                } else if ( x->word == y->word ) {
        !            39:                                        it.remove();
        !            40:                                        y->count += x->count;
        !            41:                                        delete x;
        !            42:                                }
        !            43:                } while ( swapFlag );
        !            44:        return myList;
        !            45: }
        !            46: 
        !            47: 
        !            48: ostream&
        !            49: operator<<(ostream& oo, pairST p)
        !            50: {
        !            51:        return oo << "\n" << p->word << "\t" << p->count;
        !            52: }

unix.superglobalmegacorp.com

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