Re: Shuffling a linked list
- From: Richard Heathfield <rjh@xxxxxxxxxxxxxxx>
- Date: Fri, 29 Dec 2006 20:52:43 +0000
A. Farber said:
Hello,
I have a doubly-linked list of 32 playing cards, which I'd like to
randomly and evenly (!) shuffle.
(For several reasons I'm not using an array, which I could go
through once, keeping swapping cards at random positions.)
I have a list head with 2 pointers - to the very 1st and to the
last elements and I have 2 macros to insert an element at the
"head" or at the "tail".
Just use the standard shuffling algorithm, mildly adapted for lists.
Point one of your pointers, P1, to the first unprocessed item in the list,
item I. (There are 32 - I unprocessed items.) Pick a random number in the
range 1 to 32 - I. Counting the item pointed to by P1 as 1, keep counting
along the list, using P2 to point, until you hit the random number you
generated. Swap the data at P1 with the data at P2. Now move P1 to point to
the next item on the list. Iterate until done. (When P1 is NULL - because
it fell off the end of the list - you're done.)
--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at the above domain, - www.
.
- Follow-Ups:
- Re: Shuffling a linked list
- From: A. Farber
- Re: Shuffling a linked list
- From: Richard Harter
- Re: Shuffling a linked list
- References:
- Shuffling a linked list
- From: A. Farber
- Shuffling a linked list
- Prev by Date: Re: Programming Interview Questions
- Next by Date: Re: Roulette System Scam Revealed
- Previous by thread: Re: Shuffling a linked list
- Next by thread: Re: Shuffling a linked list
- Index(es):
Relevant Pages
|
|