SHuffling a Linked List

R

RishiD

Hi,

Trying to shuffle a linked list of cards around. I know not the ideal
structure to use, but it is what my professor wants. I wrote all the
code and the logic makes sense, but for some reason when my random
integer is 0, it links the current node to itself and just breaks the
entire linked list.

Thanks for any help,

Rishi

void shuffle()
{

node<card> *curr = NULL, *prev = NULL;

int myIndex;

randomNumber rnd;

// move 50 cards around
for (int i = 0; i < 50; i++)
{
long rndNum = rnd.random(52);

myIndex = 0;

curr = front;

// scan until index reaches rndNum or reach end of list
while (curr != NULL && myIndex != rndNum)
{
prev = curr;
curr = curr->next;
myIndex++;
}

// if prev == null, that means we are shuffling first node so just
dont do anything
if (prev != NULL)
{
cout << myIndex << " - curr " << curr->nodeValue.getValue() << "
prev " << prev->nodeValue.getValue() << endl;
prev->next = curr->next;
curr->next = front;
front = curr;
}
}
}
 
M

Mark P

RishiD said:
Hi,

Trying to shuffle a linked list of cards around. I know not the ideal
structure to use, but it is what my professor wants. I wrote all the
code and the logic makes sense, but for some reason when my random
integer is 0, it links the current node to itself and just breaks the
entire linked list.

Thanks for any help,

Rishi

void shuffle()
{

node<card> *curr = NULL, *prev = NULL;

You initialize prev once, up here, and then...
int myIndex;

randomNumber rnd;

// move 50 cards around
for (int i = 0; i < 50; i++)
{
long rndNum = rnd.random(52);

myIndex = 0;

curr = front;

// scan until index reaches rndNum or reach end of list
while (curr != NULL && myIndex != rndNum)
{
prev = curr;
curr = curr->next;
myIndex++;
}

// if prev == null, that means we are shuffling first node so just
dont do anything

.... you check it down here, when it may not have been reinitialized.
Think: what is the state of prev in the case where rndNum = 0?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top