C/C++ :: How To Implement Depth-First-Search With Adjacent Matrix
Nov 1, 2014
What I have done : Created functions to accept inputs from user and read,print out adjacent matrix.
What I need : How do I start DFS in adjacent matrix so that I can output the vertices of each connected component of a graph? I'm confused with adjacent matrix and the term 'component'.
#include <stdio.h>
#include <iostream>
#define maxV 8
using namespace std;
int V,E,x,y;
int a[maxV][maxV];
You have to implement a data structure to represent graphs,directed or undirected,that tries to avoid the wasted space in the representation of a graph with adjacency matrix and the difficulty of searching the edges with adjacency list representation.We consider that the vertices are numbered from 1 to nverts and the exit degree of each vertex is at most MAXDEG. If deg[i] is the exit degree of the vertex i then the neighbors of the vertex i can be saved at the matrix edge[i][j], 1<=j<=deg[i].
Write a program that reads the datas from a file: if the graph is directed or undirected(1 or 0), the number of vertices (nverts),the number of edges (nedges) and the first and the last vertex of each edge.Write the function dfs that, with argument the data structure that you implemented before for the representation of a graph, prints the edges by the depth-first search of a graph. What I've done so far is: I wrote a program that reads these information from a file, calculates the exit degree of each vertex and creates the matrix edge[i][j]. What data structure do I have to implement???
Output to terminal: 0 2 3 1 4 5 but it should be: 0 2 4 5 3 1
Here's my code:
#include<stdio.h> #include<assert.h> /* maxVertices represents maximum number of vertices that can be present in the graph. */ #define maxVertices 100 void Dfs(int graph[][maxVertices], int *size, int presentVertex,int *visited)
I need to write a widget that will implement some matrix functions using data from a text file. The input data will be spreadsheet like and fully determined with complete rows and columns. I need to do the following,
1. populate a data structure with the input data (double) to create matrix x 2. transpose the input data matrix x to create x' 3. multiply x * x' to create a square matrix x'x 4. take the determinant of x'x
This is pretty standard linear algebra, but not something I have done in cpp before. Implementation such as the best data types to use to store each of the three matrices, how they are sized, and what library functions may be available for the matrix functions like transpose, multiply, determinant, etc.
I will be removing each data row from the initial input to observe the effect on the determinant in case that has any effect on program design.
I am unable to implement the insert function properly, every time i run the program i just get the first value and name, I am not getting other Id's and name.
"(Header File)" #include <iostream> #include <string> using namespace std; class node{ public: int ID; string name; class node *left, *right, *parent;
I'm new to program breadth first search and for my assignment we have to implement a breadth first search graph and output the order of the traversal. The problem is when I run my program I do not get any output from my traversal. All I get is "Breadth First Search Traversal starts at Vertex 2 and the order is: "
Here is my Queue class
//Declaration of node struct node{ int info; node *next; }; //Defining Queue class class Queue{
Write a program to read strings from the standard input, concatenating what is read into a large concatenated string next ( ok I wrote this program and it works properly ), change the program to separate adjacent input strings by a space ( problem with the second part ). In my book i learnt the difference between the string input operator and the getline function, size member function, empty , but i can't undersand how to read two adjacent strings and how to separate them.....
void input (int array[20]); //Used when user inputs the numbers. void calculate(int array[20], int *pairs); //Used to calculate the matches. void output(int *pairs); //Used to output the number of pairs.
I am working on a program where I sort elements into alphabetical order and then when one is less than the other I swap them. I first did it by swapping the data but they want me to swap the nodes instead and I am having trouble doing that.
Node *add_node( Node *list, const string &s ) { struct Node *n = new struct Node; n->word = s; // copy string s to word n->next = 0;
// add node n to the list // the list should always be in ascending alphabetical order n->next = list; list = n;
I am reading a book currently on data structures in c++. The questions I have is how I would be able to swap two adjacent elements by adjusting only the links (not the data) using, a) singly linked lists, doubly linked lists.
For the single linked list which I am somewhat familiar with (by the content of the book), I would consider taking the Node A, and copying its data into a new Node temp, then re-routing the pointer from whatever connected to Node A, now to Node temp. now I want to re-route the pointer of Node B to Node temp and Node temp to whatever Node was being connected from Node B. Is this the correct approach?
I have been trying to swap two adjacent nodes for my linked list sort. Its not meant to be optimal, just meant to work. My problem is I either lose nodes or get Access Violation errors.
i have come across this code for calculating the depth of a binary tree.
int maxDepth(Node *&temp) { if(temp == NULL) return 0; else { int lchild = maxDepth(temp->left); int rchild = maxDepth(temp->right);
[Code] ....
In these recursive calls i am really clue less about how the statements i numbered from 1 to 4 would be executed...in every recursive call...???
Lets temp has left depth of 3 and right depth of 100 then...in last 97 recursive calls max(temp->left) would be doing...????? how these recursive mechanism work here... I want to know specifically how these left node and right node recursive calls are co-ordinating with each other????
I wrote this code, but now need to apply a limit to the recursive depth. This is the format that I have to use. How would I pass a limit so that it stops after a given number? I'm just confused about where to apply it.
int compute_edit_distance(char *string1, char *string2, int i, int j, int limit) { if (strlen(string1) == i) return strlen(string2) - j; if (strlen(string2) == j) return strlen(string1) - i; if (string1[i] == string2[j]) return compute_edit_distance(string1, string2, i + 1, j + 1, limit);
#include <iostream> #include <stack> using namespace std; struct valpos//structure which carries information about the position of the cell and its value { int val; int row; int col;
I just want to know the code of the program: Write code to accept matrix as aurgument and display its multiplication matrix which return its multiplication matrix.
but if the matrix is compressed_matrix type, there's something with it. the error log as below:
Check failed in file boost_1_48_0/boost/numeric/ublas/detail/matrix_assign.hpp at line 1078: detail::expression_type_check (m, cm) terminate called after throwing an instance of 'boost::numeric::ublas::external_logic' what(): external logic Aborted
I am trying to implement a Task scheduler where i have n number of tasks. The Idea behind my task scheduler is that in a loop of queues of a vector, task should get enqueued to the shortest queue among the loop of queues, which is done by the following code.
#include <vector> #include <queue> std::vector<std::queue<int> > q int min_index = 0; task t // implemented in the other part of the program
[Code] ....
Next i am trying to extend this paradigm to reduce the overhead time of the scheduler, Instead of searching the shortest queue every time, search after some condition ie. search the shortest queue after 5 tasks gets enqueued to the shortest queue.
i need to do something like this
#include <vector> #include <queue> std::vector<std::queue<int> > q task t // implemented in the other part of the program while(q[min_index].size()!=q[min_index].size()+5) // check whether current min_index queue's size is increased 5 more times if not goto enqueue
inputting a search array. I tried putting a binary search but I can't get it to work. everything else works up until I put the value I am searching for in the array, then it just crashes.
How it suppose to work: input 2 coordinates with a value each then it calculates the distance between them then it suppose to let user search the coordinates for a value and state if found which coordinate it is at.