Krawędzie wychodzące z wierzchołka nr i to po prostu: {i, Endvertex[Pntr[i]]}, {i, Endvertex[Pntr[i]+1]}, ..., {i, Endvertex[Pntr[i+1]-1]}. Przypadek i=n może być rozwiązany za pomocą wartownika który wskazuje na adres |E|+1 w wektorze EndVertex.
Dla grafu nieskierowanego pęki wyjściowe wymagają (|V|+1) + 2|E| komórek pamięci (wierzchołki + wartownik + podwójnie zapisane krawędzie (graf nieskieowany)).
Przypadek grafów skierowanych w żaden sposób nie komplikuje struktury pęków wyjściowych, zmniejsza jedynie ilość zajmowanego miejsca – |V|+1 + |E|, gdyż krawędzie nie są powielane.
Wymagania pamięciowe: Dodanie nowej krawędzi: Sprawdzenie czy dana krawędź istnieje: Sprawdzenie stopnia danego wierzchołka: Usunięcie krawędzi:
Implementacja grafu w C++ (reprezentacja macierzowa) Realizacja obsługi grafu poprzez macierz jest dość prosta:
class CGraph { unsigned V,E; // liczba wierzcholkow i krawedzi bool DiGraph; // czy digraf? bool MultiGraph; // czy multigraf?
unsigned **GMatrix;