コード例 #1
0
ファイル: AdjacencyMatrix.cs プロジェクト: Prim07/Grafy_1_1
        // 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);
        }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: Prim07/Grafy_1_1
        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);
            }
        }
コード例 #3
0
ファイル: AdjacencyList.cs プロジェクト: Prim07/Grafy_1_1
        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);
            }
        }