Dúvida Exercício de Grafo

Boa tarde pessoal! Seguinte, tenho uma prova hoje sobre grafos, meu professor deixou uma lista para estudo. Porém estou com dúvida em um exercício, que é uma simples interpretação do código. Antes que alguém pergunta, não vale nota, nem algo do tipo. Gostaria de saber para poder estudar certo mesmo. Agradeço desde já pessoal!

Segue a Pergunta:

Um pilha é utilizada como estrutura subjacente para auxiliar na implementação do procedimento de busca em profundidade. Sendo assim:
a. Identifique na classe Graph as linhas em que objetos dessa classe são instanciados e as linhas em que os métodos que manipulam essa pilha são ?chamados?.
b. Um objeto do tipo StackX poderia ser criado em main()? Caso sim exemplifique através de linha de código como seria um objeto desse tipo, faça a chamada dos métodos da classe ao menos uma vez.

Código:

[code]class StackX
{
private final int SIZE = 20;
private int[] st;
private int top;
public StackX()
{
st = new int[SIZE];
top = -1;
}
public void push(int j)
{ st[++top] = j; }
public int pop()
{ return st[top–]; }
public int peek()
{ return st[top]; }
public boolean isEmpty()
{ return (top == -1); }
} // Fim da classe StackX
class Vertex
{
public char label;
public boolean wasVisited;
public Vertex(char lab)
{
label = lab;
wasVisited = false;
}
} // Fim da classe Vertex
class Graph
{
private final int MAX_VERTS = 20;
private Vertex vertexList[];
private int adjMat[][];
private int nVerts;
private StackX theStack;
public Graph()
{
vertexList = new Vertex[MAX_VERTS];
adjMat = new int[MAX_VERTS][MAX_VERTS];
nVerts = 0;
for(int y=0; y<MAX_VERTS; y++)
for(int x=0; x<MAX_VERTS; x++)
adjMat[x][y] = 0;
theStack = new StackX();
}
public void addVertex(char lab)
{ vertexList[nVerts++] = new Vertex(lab);
}
public void addEdge(int start, int end)
{
adjMat[start][end] = 1;
adjMat[end][start] = 1;
}
public void displayVertex(int v)
{
System.out.print(vertexList[v].label);
}
public void dfs() // depth-first search
{
vertexList[0].wasVisited = true;
displayVertex(0);
theStack.push(0);
while( !theStack.isEmpty() )
{
int v = getAdjUnvisitedVertex( theStack.peek() );
if(v == -1)
theStack.pop();
else
{
vertexList[v].wasVisited = true;
displayVertex(v);
theStack.push(v);
}
}
for(int j=0; j<nVerts; j++)
vertexList[j].wasVisited = false;
}
public int getAdjUnvisitedVertex(int v)
{
for(int j=0; j<nVerts; j++)
if(adjMat[v][j]==1 && vertexList[j].wasVisited==false)
return j;
return -1;
}
}
class DFSApp
{
public static void main(String[] args)
{
Graph theGraph = new Graph();
theGraph.addVertex(‘A’);
theGraph.addVertex(‘B’);
theGraph.addVertex(‘C’);
theGraph.addVertex(‘D’);
theGraph.addVertex(‘E’);
theGraph.addVertex(‘F’);
theGraph.addVertex(‘G’);

theGraph.addEdge(0, 1);
theGraph.addEdge(1, 2);
theGraph.addEdge(0, 3);
theGraph.addEdge(3, 4);
theGraph.addEdge(0, 5);
theGraph.addEdge(5, 6); System.out.print("Visits: ");
theGraph.dfs();
System.out.println();
}
} // Fim da classe DFSApp[/code]

Seu problema é interpretação de texto, certo? Nem interpretação de código é. Para lhe ajudar, pilha em inglês é “stack”. Dessa forma você deva saber qual é a classe que representa a pilha.

[quote] objetos dessa classe são instanciados…[/quote] - instanciar = “new” - onde há um “new” da classe que representa a pilha?

[quote]Um objeto do tipo StackX poderia ser criado em main()? [/quote] ele não depende da outra classe, só dele mesmo, então pode ser criado sim. Obviamente a resposta que o professor quer é “sim” porque ele também fala:

Ou seja, ele está esperando que você responda “sim” para que você faça um programinha que instancie a classe StackX e chame cada um de seus métodos.

Você percebeu que, para ajudar você a conseguir nota, ele não lhe perguntou absolutamente nada sobre teoria de grafos nessa questão. O fato de haver uma representação de grafos nessa classe é só um mero detalhe.

Ele só quis que você lesse atentamente a questão e fosse respondendo os itens devagar.

Agradeço pela a ajuda na interpretação. Realmente, pensando dessa maneira eu entendi a mensagem. Não queria abusar, quanto a teoria imaginei que fosse algo do tipo, meu problema é no código. Não saberia fazer esse pequeno “programinha” que ele pede, poderia me dar um suporte?

Você sabe escrever aquele famoso programinha “Hello, world” e rodá-lo? Pegue esse programinha, e o modifique de forma que instancie um objeto da classe StackX e chame cada um dos seus métodos. Você tem de entender cada um deles, para lhe ajudar o seu professor foi camarada e não inventou nomes esquisitos para os métodos - ou seja, o método “pop” faz exatamente um “pop” da pilha.

Você falou mais grego que meu professor, kkkk. Agradeço a tentativa de ajuda, mas de fato entendo muito pouco de java e tenho enormes dificuldades. Mas agradeço muito!

O programa “hello, world” é este aqui, caso você não tenha entendido:

public class Exemplo {
    public static void main (String[] args) {
        System.out.println ("Hello, world!");
    }
}

Você muda este programa aqui e consegue resolver o resto do exercício.