$31
Hint
Match the output of your program to that of the sample solution!!! Directions for running the sample solution appear below.
Directions for running the preview script appear on the following pages.
Project06 Description
Complete the provided partial C++ program that will implement a Graph ADT Class in which an Adjacency List as the internal representation of the graph structure.
The lecture notes and textbook provide the source code for basic graph methods and the DFS and BFS algorithms but you will need to modify this code to complete this assignment.
Required modifications include
– conversion to use an adjacency list representation
– addition of the specified exception detection/handling
– conversion to use the stack and queue containers from the Standard Template Library. Additional details may be found on pages 4-5 of the handout (see Project06 Hints).
Running the Sample Solution on blackhawk or the laboratory Linux machines
The best description of what your code must do is the Sample Solution for the project.
Run the sample solution by typing the following at blackhawk terminal window command prompt where inputfilename is the name of one of the provided input files (for example, p06input1.txt).
/home/work/cpe212/project06/p06 inputfilename
Your current working directory must contain the input files for this to work.
Unzipping Sample Input Files on blackhawk
Use the Firefox browser to access Canvas and download main.cpp and the sample input files into your Project06 directory. At terminal window prompt, use the unzip utility to uncompress the files. For example, to unzip the files into your current directory:
unzip Project06_Materials.zip
Since this project is worth four points, you have been given four input files to test your program.
Running the Preview Script on blackhawk
Preconditions for running the Preview script:
(1) Your current working directory must contain both your project06 executable and all sample input files BEFORE you execute the preview script!!!
(2) Linux is case sensitive – be sure the name of your executable is project06
Run the preview script by typing the following in a blackhawk terminal window command prompt
/home/work/cpe212data/project06/preview06.bash
This script will run both the Sample Solution AND your project06 executable program on the complete set of input files, and it compares the outputs of the two programs line by line to identify errors in your program's outputs. Make sure that the output of your program exactly matches the output of the Sample Solution.
Be sure to fix any memory leaks identified by the preview script to receive full credit. Project06 Files Provided – DO NOT MODIFY OR SUBMIT THESE FILES ** graph.h – declares the Graph ADT class and describes its member functions main.cpp – includes the main() function test driver for the Graph class.
makefile – includes all commands required to compile and link your project on blackhawk Do not modify or submit any of the provided files named above** !!!
All output to the monitor (stdout) will be performed by the code provided. Project06 FILES YOU MUST WRITE AND SUBMIT ** graph.cpp – add your code here to implement the member function of the Graph class.
The code in graph.h must not include any INPUT or OUTPUT statements.
PRINT functions have been included in graph.h for debugging purposes
Use of the Standard Template Library containers or container adapters is not allowed.
See graph.h for descriptions of Graph ADT.
Once again, I recommend creating an Empty Framework of function definitions in graph.cpp that compiles first – before adding any code to any function.
Address the critical operations within the Graph ADT [ constructor, AddVertex(), AddEdge() ] since these critical items must be functional in order to test other operations.
Make sure these critical operations work before adding code for any non-critical operations.
Program Compilation Instructions
This project consists of two C++ files provided by the instructor, along with a file named makefile to help you compile your program. So, for this assignment, all you must do to compile the program is to use the following command at the Linux command line make which will create an executable named project06 from the provided files.
If your program compiled successfully, you may then type
./project06 NameOfInputFile to execute your program assuming that the input file is located in the same directory with the executable.
Project06 Hints
You will be better prepared for the Final Exam if you can write the Graph ADT code on your own rather than just copying code from the textbook or lecture notes since the written exams are CLOSED BOOK and CLOSED NOTES.
When adapting the code provided during lecture, you will need to make modifications to convert the code to work with the Adjacency List representation of a graph. The VertexExists and EdgeExists methods take the place of the IndexIs method since there is NO ARRAY IN THIS PROJECT!!!
For help with the stack and queue containers from the Standard Template Library, see the lecture notes.
Project06 Adjacency List Representation
VertexNode and EdgeNode are structs used to represent vertices and edges of the graph in the adjacency list representation.
In the Adjacency List implementation, there is NO ARRAY!!!
Within the constructor, you will need to initialize the pointer to the list of vertices to NULL.
Detailed descriptions of the VertexNode and EdgeNode are structs may be found in the graph.h file.