Adjacent table
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace LH.GraphConsole{ public struct AdjacencyListGraph { public List<EdgeItem>[] VertexNodes; public AdjacencyListGraph(int vertexNumber) { VertexNodes = new List<EdgeItem>[vertexNumber]; for (int i = 0; i < vertexNumber; i++) { VertexNodes[i] = new List<EdgeItem>(); } } } public struct EdgeItem { public int Weight; public List<EdgeItem> NextNode; public EdgeItem(int weight, List<EdgeItem> nextNote) { Weight = weight; NextNode = nextNote; } }}
It is also a simple main program:
namespace LH.GraphConsole{ class Program { static void Main(string[] args) { AdjacencyList(); } private static void AdjacencyList() { int vertexNumber = 5; var adjacencyListGraph = new AdjacencyListGraph(vertexNumber); adjacencyListGraph.VertexNodes[0].Add(new EdgeItem(6, adjacencyListGraph.VertexNodes[4])); adjacencyListGraph.VertexNodes[1].Add(new EdgeItem(9, adjacencyListGraph.VertexNodes[0])); adjacencyListGraph.VertexNodes[1].Add(new EdgeItem(3, adjacencyListGraph.VertexNodes[2])); adjacencyListGraph.VertexNodes[2].Add(new EdgeItem(2, adjacencyListGraph.VertexNodes[0])); adjacencyListGraph.VertexNodes[2].Add(new EdgeItem(5, adjacencyListGraph.VertexNodes[3])); adjacencyListGraph.VertexNodes[3].Add(new EdgeItem(1, adjacencyListGraph.VertexNodes[4])); } }}
For the next part of Part3, see the cross linked list.