'duplicate_stack(stack)' was returning reversed stacks.
This commit is contained in:
		
							parent
							
								
									777434177f
								
							
						
					
					
						commit
						c6ac149dde
					
				@ -60,13 +60,19 @@ struct card *duplicate_card(struct card *card) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
struct stack *duplicate_stack(struct stack *stack) {
 | 
					struct stack *duplicate_stack(struct stack *stack) {
 | 
				
			||||||
  struct stack *iterator = stack;
 | 
					  struct stack *iterator = stack;
 | 
				
			||||||
  struct stack *new_stack;
 | 
					  struct stack *tmp_stack, *new_stack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  allocate_stack(&new_stack);
 | 
					  allocate_stack(&new_stack);
 | 
				
			||||||
 | 
					  allocate_stack(&tmp_stack);
 | 
				
			||||||
  initialize_stack(new_stack);
 | 
					  initialize_stack(new_stack);
 | 
				
			||||||
 | 
					  initialize_stack(tmp_stack);
 | 
				
			||||||
  for (iterator = stack; iterator; iterator = iterator->next) {
 | 
					  for (iterator = stack; iterator; iterator = iterator->next) {
 | 
				
			||||||
    push(&new_stack, duplicate_card(iterator->card));
 | 
					    push(&tmp_stack, duplicate_card(iterator->card));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  while (!empty(tmp_stack)) {
 | 
				
			||||||
 | 
					    push(&new_stack, (pop(&tmp_stack))->card);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  delete_stack(tmp_stack);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return(new_stack);
 | 
					  return(new_stack);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -175,14 +175,16 @@ void test_duplicate_card() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void test_duplicate_stack() {
 | 
					void test_duplicate_stack() {
 | 
				
			||||||
  struct stack *stack_0, *stack_1;
 | 
					  struct stack *stack_0, *stack_1;
 | 
				
			||||||
  struct card *card;
 | 
					  struct card *card[5];
 | 
				
			||||||
  const int start_y = 5, start_x = 10;
 | 
					  const int start_y = 5, start_x = 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  allocate_card(&card);
 | 
					 | 
				
			||||||
  set_card(card, ACE, SPADES, EXPOSED, start_y, start_x);
 | 
					 | 
				
			||||||
  allocate_stack(&stack_0);
 | 
					  allocate_stack(&stack_0);
 | 
				
			||||||
  initialize_stack(stack_0);
 | 
					  initialize_stack(stack_0);
 | 
				
			||||||
  push(&stack_0, card);
 | 
					  for (int i = 0; i < 5; i++) {
 | 
				
			||||||
 | 
					    allocate_card(&card[i]);
 | 
				
			||||||
 | 
					    set_card(card[i], i, SPADES, EXPOSED, start_y, start_x);
 | 
				
			||||||
 | 
					    push(&stack_0, card[i]);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  stack_1 = duplicate_stack(stack_0);
 | 
					  stack_1 = duplicate_stack(stack_0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  assert(stack_0 != stack_1);
 | 
					  assert(stack_0 != stack_1);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user