// Wyświetlanie macierzy na stack panelu // Canvas przekazany, by móc wywołać funkcję DrawGraph(Canvas) później // Drugi StackPanel przekazany, by móc później wyświetlić macierz incydencji // (jest ona więc tutaj też na nowo tworzona, bo za każdą zmianą w wyświetlaniu // macierzy sąsiedztwa zmienia sie również macierz incydencji public void Display(StackPanel StackPanelForDisplayingAdjacencyMatrix, Canvas MyCanvas, StackPanel StackPanelForDisplayingIncidenceMatrix, StackPanel StackPanelForDisplayingAdjacencylist) { StackPanelForDisplayingAdjacencyMatrix.Children.Clear(); string myString = ""; for (int i = 0; i < AdjacencyArray.GetLength(0); i++) { for (int j = 0; j < AdjacencyArray.GetLength(1); j++) { myString += AdjacencyArray[i, j].ToString() + " "; } myString += "\n"; } TextBlock myBlock = new TextBlock(); myBlock.Text = myString; myBlock.FontSize = 16; myBlock.FontFamily = new FontFamily("Lucida Console"); StackPanelForDisplayingAdjacencyMatrix.Children.Add(myBlock); DrawGraph(AdjacencyArray.GetLength(0), MyCanvas); // Nowa maceirz incydencji incidenceMatrix = new IncidenceMatrix(this); incidenceMatrix.Display(StackPanelForDisplayingIncidenceMatrix, StackPanelForDisplayingAdjacencylist); }
private void AdjacencyList_to_AdjacencyMatrix_Click(object sender, RoutedEventArgs e) { if (adjacencyMatrix != null) { IncidenceMatrix tmpIncendenceMatrix = new IncidenceMatrix(adjacencyMatrix); AdjacencyList tmpAdjacencyList = new AdjacencyList(tmpIncendenceMatrix); AdjacencyMatrix convertedAdjacencyMatrix = new AdjacencyMatrix(tmpAdjacencyList); convertedAdjacencyMatrix.Display(StackPanelForDisplayingAdjacencyMatrix, MyCanvas, StackPanelForDisplayingIncidenceMatrix, StackPanelForDisplayingAdjacencylist); } }
public AdjacencyList(IncidenceMatrix sourceMatrix) { // Pobranie liczby krawędzi i wierzchołków int num_e = sourceMatrix.IncidenceArray.GetLength(1); int num_v = sourceMatrix.IncidenceArray.GetLength(0); // Zmienne pomocnicze int tmp1 = 0, tmp2 = 0; // Alkokowanei pamięci pod listę list ListOfLists = new List <List <int> >(); // Czyścimy wszystkie listy w tablicy for (int i = 0; i < num_v; i++) { ListOfLists.Add(new List <int>()); } //Konwersja Macierzy Incydencji -> Lista sąsiedztwa for (int j = 0; j < num_e; j++) { for (int i = 0; i < num_v; i++) { if (sourceMatrix.IncidenceArray[i, j] == 1) { tmp2 = i; } else if (sourceMatrix.IncidenceArray[i, j] == -1) { tmp1 = i; } } ListOfLists[tmp2].Add(tmp1 + 1); ListOfLists[tmp1].Add(tmp2 + 1); } }