Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

Homework 3 Graph and sorting algorithms You are to write a program that finds the driving direction of a specified initial and end location much like MapQuest or Google Maps. You are to read the map...

1 answer below »
Homework 3
Graph and sorting algorithms
You are to write a program that finds the driving direction of a specified initial and end location much like MapQuest or Google Maps. You are to read the map information from a text file and create a graph. Each intersection and point of interest in the map will be given a unique name and be a vertex in the graph. Each road connecting 2 intersections is an edge in the graph. The edge names do not need to be unique. Use a directional graph since some streets may be one-ways.
The text file will look like:
Intersection         Street        Intersection                    Speed
Name            Name        Name            Direction Distance    Limit
Alafaya&GeminiN    Gemini        Gemini&GreekParkCt    East        .3    35
Gemini&GreekParkCt    Gemini        Alafaya&GeminiN    West        .3    35
Gemini&GreekParkCt     Gemini        Gemini&KnightCtE    East        .5    35
Gemini&KnightCtE    Gemini        Gemini&GreekParkCt    West        .5    35
Gemini&KnightCtE    KnightCt    Arena            North        .1    20
Arena            KnightCt    Gemini&KnightCtW    South        .1    20
        
Steps:
1. Write a function to perform a Quick Sort or Merge Sort on a list of alphanumeric data.
2. Read the text file and add each intersection name to the list. Only read the first column since all intersection names will be in there.
3. Sort the list using the Quick Sort or Merge Sort algorithm
4. Copy the names from the sorted list into the graph. Omit duplicates.
5. Create the graph by reading the original map file and adding an edge for each street. Use a binary search algorithm to find the proper vertex in the graph.
6. In the main program ask the user to input a start and end intersection.
7. Find the shortest and quickest path from the start to the end intersection. The output should indicate the name of the street and the distance.
The output should look like:
From Alafaya&GeminiN
Take Gemini East to Gemini&GreekParkCt        .3
Take Gemini East to Gemini&KnightCtE        .5
Take KnightCt North to Arena            .1
The shortest path is the path with the least mileage while the fastest path is the path with the least time. The time is the distance multiplied by the speed in MPH.
You should have at least 20 intersections and 30 roads. You may share map files with other students. In fact, if you think you have a good map file allow me to have a copy for future students.
Hint the node structure for the graph should include the street name, direction like East, dist, and speed. The Graph a
ay should include the intersection name and the pointer to the linked list.

Alafaya&Gemini XXXXXXXXXXGemini XXXXXXXXXXGemini&GreekPark XXXXXXXXXXEast XXXXXXXXXX35
Alafaya&Gemini XXXXXXXXXXAlafaya XXXXXXXXXXAlafaya&Centaurus South XXXXXXXXXX45
Alafaya&Centaurus Alafaya XXXXXXXXXXAlafaya&Gemini XXXXXXXXXXNorth XXXXXXXXXX45
Alafaya&Centaurus Centaurus Centaurus&Gemini XXXXXXXXXXEast XXXXXXXXXX35
Alafaya&Centaurus Alafaya XXXXXXXXXXAlafaya&University South XXXXXXXXXX45
Centaurus&Gemini XXXXXXXXXXGemini XXXXXXXXXXAquarius&Gemini XXXXXXXXXXNorth XXXXXXXXXX35
Centaurus&Gemini XXXXXXXXXXCentaurus Alafaya&Centaurus West XXXXXXXXXX35
Centaurus&Gemini XXXXXXXXXXGemini XXXXXXXXXXWestGarage XXXXXXXXXXSouth XXXXXXXXXX35
Aquarius&Gemini XXXXXXXXXXGreekPark Gemini&GreekPark XXXXXXXXXXNorth XXXXXXXXXX30
Aquarius&Gemini XXXXXXXXXXAquarius XXXXXXXXXXAquarius&PegCirc XXXXXXXXXXEast XXXXXXXXXX30
Aquarius&Gemini XXXXXXXXXXGemini XXXXXXXXXXCentaurus&Gemini XXXXXXXXXXSouth XXXXXXXXXX35
Gemini&GreekPark XXXXXXXXXXGemini XXXXXXXXXXAlafaya&Gemini XXXXXXXXXXNorthwest XXXXXXXXXX
Gemini&GreekPark XXXXXXXXXXGreekPark Aquarius&Gemini XXXXXXXXXXSouthwest XXXXXXXXXX
Gemini&GreekPark XXXXXXXXXXGemini XXXXXXXXXXGemini&KnightCt XXXXXXXXXXEast XXXXXXXXXX35
WestGarage XXXXXXXXXXGemini XXXXXXXXXXCentaurus&Gemini XXXXXXXXXXNortheast XXXXXXXXXX
WestGarage XXXXXXXXXXGemini XXXXXXXXXXGemini&Lynx XXXXXXXXXXSouthwest XXXXXXXXXX
Gemini&Lynx XXXXXXXXXXLynx XXXXXXXXXXLynxStation XXXXXXXXXXEast XXXXXXXXXX25
Gemini&Lynx        Gemini        WestGarage        North        0.05    35
Gemini&Lynx        Gemini        Gemini&University    South        0.1    35
LynxStation XXXXXXXXXXLynx XXXXXXXXXXGemini&Lynx XXXXXXXXXXWest XXXXXXXXXX25
Gemini&University Gemini XXXXXXXXXXGemini&Lynx XXXXXXXXXXNorthwest XXXXXXXXXX
Gemini&University University Alafaya&University Southwest XXXXXXXXXX
Gemini&University Gemini XXXXXXXXXXMillican XXXXXXXXXXEast XXXXXXXXXX35
Alafaya&University Alafaya XXXXXXXXXXAlafaya&Centaurus North XXXXXXXXXX45
Alafaya&University University Gemini&University Northeast XXXXXXXXXX
Millican XXXXXXXXXXGemini XXXXXXXXXXGemini&University West XXXXXXXXXX35
Millican XXXXXXXXXXGemini XXXXXXXXXXSouthGarage XXXXXXXXXXSoutheast XXXXXXXXXX
SouthGarage XXXXXXXXXXGemini XXXXXXXXXXMillican XXXXXXXXXXNorthwest XXXXXXXXXX
SouthGarage XXXXXXXXXXGemini XXXXXXXXXXRecCenter XXXXXXXXXXSouth XXXXXXXXXX35
EastGarage XXXXXXXXXXGemini XXXXXXXXXXGemini&Orion XXXXXXXXXXNorth XXXXXXXXXX35
EastGarage XXXXXXXXXXGemini XXXXXXXXXXGemini&Li
a XXXXXXXXXXSouth XXXXXXXXXX35
RecCenter XXXXXXXXXXGemini XXXXXXXXXXSouthGarage XXXXXXXXXXWest XXXXXXXXXX35
RecCenter XXXXXXXXXXGemini XXXXXXXXXXGemini&Li
a XXXXXXXXXXEast XXXXXXXXXX35
Gemini&Li
a XXXXXXXXXXGemini XXXXXXXXXXRecCenter XXXXXXXXXXSouthwest XXXXXXXXXX
Gemini&Li
a XXXXXXXXXXGemini XXXXXXXXXXEastGarage XXXXXXXXXXNortheast XXXXXXXXXX
Gemini&Li
a XXXXXXXXXXLi
a
Answered Same Day Apr 15, 2021

Solution

Yogesh answered on Apr 17 2021
145 Votes
#include #include #include #include #include #include #include using namespace std;
void QuickSort(string data_str[], int left, int right){
int i, j;
string x;
string temp;
i = left;
j = right;
x = data_str[(left+right)/2];
do{
while((data_str[i] < x) && (i < right)){
i++;
}
while((data_str[j] > x) && (j > left)){
j--;
}
if(i <= j){
temp = data_str[i];
data_str[i] = data_str[j];
data_str[j] = temp;
i++;
j--;
}
}while(i <= j);
if(left < j){
QuickSort(data_str, left, j);
}
if(i < right){
QuickSort(data_str, i, right);
}
}
template void split(const string& str, Container& cont){
istringstream iss(str);
copy(istream_iterato
string>(iss), istream_iterato
string>(),back_inserter(cont));
}
int remove_duplicates(string data[], int len){

Return, if a
ay is empty

or contains a single element...
if(len == 0 || len == 1){
return len;
}
int j = 0;
for(int i=0; i if(data[i] != data[i+1]){
data[j++] = data[i];
}
}
data[j++] = data[len-1];
return j;
}
Graph implementation...
Structure to store Nodes of graph...
struct Node{
string val;
intersectionName.
string streetName, direction;
float dist;
int speed;
dist is weight.
Node* next;
};
Structure to store edges of graph...
struct Edge{
string src, dest;
source and destination
string street, direction;
float dist;
int speed;
Weights
};
class Graph{
...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here