Changeset a0b7ef5


Ignore:
Timestamp:
Apr 7, 2026, 11:22:40 AM (19 hours ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
d6ce310
Parents:
bb9897c
Message:

small updates to list chapter

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/mike_brooks_MMath/list.tex

    rbb9897c ra0b7ef5  
    737737The @i@ fields in each node are initialized from @0..n-1@.
    738738These @i@ values are then shuffled in the nodes, and the @i@ value is used to represent an indirection to that node for insertion.
    739 hence, the nodes are inserted in random order and removed in the same random order.
     739Hence, the nodes are inserted in random order and removed in the same random order.
    740740$\label{p:Shuffle}$
    741 \begin{c++}
    742         for ( i; n ) @nodes[i].i = i@;          $\C{// indirection}$
     741\begin{cfa}
     742        for ( i; n ) @nodes[i].i = i@;          $\C[3.25in]{// indirection}$
    743743        shuffle( nodes, n );                            $\C{// random shuffle indirects within nodes}$
    744744
    745745        while ( CONTINUE ) {
    746746                for ( i; n ) {
    747                         node_t & temp = nodes[ nodes[i].i ];
    748                         @temp.j = 0;@                           $\C{// touch random node for wrapped nodes}$
    749                         insert_first( lst, temp );
     747                        node_t & temp = nodes[ nodes[i].i ]; $\C{// select random node in array}$
     748                        @temp.j = 0;@                           $\C{// only touch random node for wrapped nodes}$
     749                        insert_first( lst, temp );      $\C{// build up}$
    750750                }
    751                 insert_first( lst, nodes[ @nodes[i].i@ ] ); $\C{// build up}$
    752                 for ( i; n ) pass( &remove_first( lst ) );      $\C{// tear down}$
     751                for ( i; n ) pass( &remove_first( lst ) );      $\C{// tear down}\CRT$
    753752                totalOpsDone += n;
    754753        }
    755 \end{c++}
     754\end{cfa}
    756755Note, insertion is traversing the list of nodes linearly, @node[i]@.
    757756For intrusive lists, the inserted (random) node is always touched because its link fields are read/written for insertion into the list.
Note: See TracChangeset for help on using the changeset viewer.