Lab 13

Lab assignment: Linked Lists via Tic Tac Toe

We've given you some code with the game of tic tac toe implemented in C++.  Play it yourself a couple of times to verify it works, and give it a quick scan to get an idea of how the "state" of the board is being stored.  You will need to add a linked list to the code to store the state of the game, adding each new state to the head of the list.  Then, you should provide functionality for undoing, by removing the head of the list.  Then, if you can figure it out, implement a redo, where you can get back to the part of the list you just left, even though there's no link pointing in that direction.

For this program, don't worry about deallocating memory with delete, though you will be dynamically allocating memory.  The program is small enough that you won't run out of memory before the program terminates.

Though not extra credit, consider how you would remove the global variables, and work out the code using just your linked list, and the node representing the current head and state.

Notes:

Submission:

1. You should work with a partner for this (and all the remaining) lab(s).  Only one of you need to submit the program to Blackboard, though you should be certain that both of your names be present in a comment at the top of the .c or .cpp source file.

1.5 If you work alone, include just your name in a comment at the top so that I know you worked alone, and not have to guess.

2. You should turn in to Blackboard by the END OF THE LAB (8:50 for the 8-9 lab session, 9:50 for the 9-10 lab session).  I know it's tempting to keep working on it, but other classes come in, and it's not fair to the students who are limited to that particular time span if you go over.  Which isn't to say that you can't work on it later, to check your solution against the one I post for your own understanding.  But what you submit for a grade should be before the next hour begins.

3. If you wish, you may submit your lab by 11 am on Thursday for a 1 point penalty.  If you can't finish up the second point by the end of lab, you can still earn the score by completing all three steps and submitting your code by the day after.