Универсальные шаблоны - C# (204918)

Узнай цену своей работы

Формулировка задачи:

Вот мой класс для представления граф, нужно переделать его с использование дженериков. Поясните, как это
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Graphs
{
    class graph
    {
        // ПОЛЯ ДЛЯ РАБОТЫ С ГРАФОМ!!!!!!!
        private int numberpoints;
        private int[] pointsinfo = new int[100];// хранит информацию каждой точки
        public int[,] matrix = new int[100, 100]; // будет в нулевых строке и столбце хранить номер вершины. 

        // СВОЙСТВА ДЛЯ МАССИВА ИНФЫ О ТОЧКАЪ И РЕБРАХ И ИХ КОЛИЧЕСТВЕЕ!!!!!!!!!
        public int Numberpoints
        {
            get { return numberpoints; }
            set { numberpoints = value; }
        }
 
        public int this[int i]
        {
            get
            {
                return pointsinfo[i];
            }
 
            set
            {
                pointsinfo[i] = value;
            }
        }
 
        // РАБОТА  С ВЕРШИНАМИ ГРАФА!!!!!!!!!!!!!!!!!!
        public void Addpointandinfo(int y) // ввод информации о вершине(числовой!)
        {
            ++numberpoints;
            pointsinfo[numberpoints] = y;
        }
 
        public void Deletepointandinfo(int number) // принимаем ввод номера точки, которую удаляем!! ПОТОМ ДОБАВИТЬ ПРОВЕРКУ АНЛИЧИЯ РЕБРА!!!!!!!!! 
        {
            --numberpoints;
            for (int i = number; i < numberpoints + 1; i++)
            {
                pointsinfo[i] = pointsinfo[i + 1];
            }
            for (int j = 1; j < numberpoints + 1; j++)
            {
                for (int i = 1; i < numberpoints + 1; i++)
                {
                    if (i >= number)
                    {
                        if (j >= number)
                            matrix[i, j] = matrix[i + 1, j + 1];
                        else
                            matrix[i, j] = matrix[i + 1, j];
                    }
                    else
                    {
                        if (j >= number)
                            matrix[i, j] = matrix[i, j + 1];
                        else
                            matrix[i, j] = matrix[i, j];
                    }
                }
            }
        }
 
        public int Checkpoint(int number) // проверяет, если количество больше, чем я вввожу, то возвращает ноль - те есть такой точки нету!!!
        {
            if (number > numberpoints || number <= 0)
                return 0;
            else return 1;
        }
 
        // РАБОТА С РЕБРАМИ ГРАФА!!!!!!!!!!!!!!!!!
        public void Deleteedgeandinfo(int point1, int point2) // выводим матрицу смежности - но номерам удаляем!
        {
            matrix[point1, point2] = 0;
            matrix[point2, point1] = 0;
        }
 
        public void Addedgeandinfo(int point1, int point2, int y) // первая точка, втора точка(через которые прокладывается ребро), информация о ребре
        {
            matrix[point1, point2] = y;
            matrix[point2, point1] = y;
        }
 
        public int CheckedgeDelete(int point1, int point2) /// проверяет есть ли такие точки в матрице!. Если нет, то возвращает 0. Если есть - 1 !!!
        {
            if ((point1 > numberpoints) || (point2 > numberpoints) || (point1 < 1) || (point2 < 1))
                return 0;
            if (matrix[point1, point2] == 0 && matrix[point2, point1] == 0)
                return 0;
            else return 1;
 
        }
        public int CheckedgeAdd(int point1, int point2) /// проверяет есть ли такие точки в матрице!. Если нет, то возвращает 0. Если есть - 1 !!!
        {
            if ((point1 > numberpoints) || (point2 > numberpoints) || (point1 < 1) || (point2 < 1) || (point1 == point2))
                return 0;
            if (matrix[point1, point2] == 0 && matrix[point2, point1] == 0)
                return 1;
            else return 0;
        }
 
        // РАБОТА С МАТРИЦЕЙ СМЕЖНОСТИ!!!!!!!!!!!!
 
        public void matrixnull()
        {
            for (int i = 0; i < 100; i++)
            {
                for (int j = 0; j < 100; j++)
                    matrix[i, j] = 0;
            }
 
            for (int i = 0; i < 100; i++)
            {
                matrix[i, 0] = i;
                matrix[0, i] = i;
            }
 
        }
 
        public void begin()
        {
            Numberpoints = 0;
            matrixnull();
            Addpointandinfo(623);
            Addpointandinfo(234);
            Addpointandinfo(456);
            Addpointandinfo(354);
            Addpointandinfo(34);
            Addpointandinfo(905);
            Addedgeandinfo(1, 2, 8);
            Addedgeandinfo(1, 4, 7);
            Addedgeandinfo(2, 3, 6);
            Addedgeandinfo(3, 4, 5);
            Addedgeandinfo(6, 4, 4);
            Addedgeandinfo(5, 6, 3);
            Addedgeandinfo(3, 6, 2);
            Addedgeandinfo(5, 1, 1);
            Addedgeandinfo(5, 4, 9);
            Addedgeandinfo(5, 3, 4);
        }
 
    }
}

Решение задачи: «Универсальные шаблоны»

textual
Листинг программы
public void begin()
        {
            Numberpoints = 0;
            matrixnull();
int[] list1 = new int[] {623, 234, 456, 354, 34, 905};
for (int i =0; i < list1.lenght; i++)
            Addpointandinfo(list1[i]);
 
int[][] list2 = new int[][]
{
new int[] {1,2,3},
new int[] {1,4,7},
//...
new int[] {5,3,4}
}
for (int i=0; i<list2.Lenght; i++)
            Addedgeandinfo(list2[i].[0], list2[i].[1], list2[i].[2]);
        }

Оцени полезность:

8   голосов , оценка 4.375 из 5