Suuntaamaton verkko on melkein kuin suunnattu verkko. Se koostuu solmuista ja solmujen välisistä kaarista, mutta kaarilla ei ole suuntaa. Suunnatusta verkosta poiketen suuntaamattoman verkon kaari ei saa johtaa solmusta itseensä. Koska kaarella ei ole suuntaa, molempia kaareen liittyviä solmuja kutsutaan päätesolmuja ja ne myös ovat toistensa naapureita. Haluttu tieto on talletettu/talletetaan solmuihin. Solmut voidaan "värittää" eri väreillä ja niille voidaan antaa paino. Kaarille voidaan myös antaa nimi, väri ja paino.
Abstraktin tietotyypin "suuntaamaton verkko" nimi tietorakennekirjastossa on GRAPH.
Luo uuden verkon G, ja asettaa sen tyhjäksi verkoksi. Jos verkko G
ei ole tyhjä verkko, kaikki verkossa olleet solmut menetetään.
Aikavaativuus: O(1).
void GRAPH_CREATE( GRAPH G );
Vie verkkoon G Uuden solmun jonka nimiöksi tulee lbl, väriksi col
ja painoksi cst, ja palauttaa luodun solmun.
Aikavaativuus: O(1)
GRAPH_VERTEX GRAPH_INSERT_VERTEX( GRAPH G, GRAPH_LABELTYPE lbl, GRAPH_COSTTYPE cst, GRAPH_COLORTYPE col );
Vie verkkoon G uuden kaaren solmujen V1 ja V2 välille, ja
palauttaa luodun kaaren. Nimiöksi tulee lbl, väriksi col ja painoksi cst.
Aikavaativuus: O(1)
GRAPH_EDGE GRAPH_INSERT_EDGE ( GRAPH G, GRAPH_VERTEX V1, GRAPH_VERTEX V2, GRAPH_LABELTYPE lbl, GRAPH_COSTTYPE cst, GRAPH_COLORTYPE col );
Poistaa verkosta G solmun V. Samalla poistetaan myös solmuun liittyvät kaaret V.
Aikavaativuus: O(|E+V|)
void GRAPH_DELETE_VERTEX ( GRAPH G, GRAPH_VERTEX V );
Poistaa verkosta G kaaren E, mutta ei kaareen liittyviä solmuja.
Aikavaativuus: O(|E|)
void GRAPH_DELETE_EDGE ( GRAPH G, GRAPH_EDGE E );
Palauttaa verkon G solmujen V1 ja V2 välillä olevan kaaren jos
sellainen on. Jos kaarta tai solmuja ei ole, palautetaan NULL.
Aikavaativuus: O(|E|)
GRAPH_EDGE GRAPH_RETRIEVE_EDGE ( GRAPH G, GRAPH_VERTEX V1, GRAPH_VERTEX V2 );
Tuhoaa kaikki solmut ja kaaret ja vapauttaa verkon varaaman tilan.
Aikavaativuus: O(|E+V|)
void GRAPH_FREE( GRAPH G );
Palauttaa verkon G solmun V värin.
Aikavaativuus: O(1).
GRAPH_COLORTYPE GRAPH_VERTEX_COLOR ( GRAPH G, GRAPH_VERTEX V );
Palauttaa verkon G solmun V painon.
Aikavaativuus: O(1).
GRAPH_COSTTYPE GRAPH_VERTEX_COST ( GRAPH G, GRAPH_VERTEX V )
Palauttaa verkon G solmun V nimiön.
Aikavaativuus: O(1).
GRAPH_LABELTYPE GRAPH_VERTEX_LABEL ( GRAPH G, GRAPH_VERTEX V );
Palauttaa verkon G kaaren E värin.
Aikavaativuus: O(1).
GRAPH_COLORTYPE GRAPH_EDGE_COLOR ( GRAPH G, GRAPH_EDGE E );
Palauttaa verkon G kaaren E painon.
Aikavaativuus: O(1).
GRAPH_COSTTYPE GRAPH_EDGE_COST ( GRAPH G, GRAPH_EDGE E )
Palauttaa verkon G kaaren E nimiön.
Aikavaativuus: O(1).
Asettaa verkon G solmun V väriksi col.
Aikavaativuus: O(1).
void GRAPH_ASSIGN_VERTEX_COLOR ( GRAPH G, GRAPH_VERTEX V, GRAPH_COLORTYPE col );
Asettaa verkon G solmun V painoksi cst.
Aikavaativuus: O(1).
void GRAPH_ASSIGN_VERTEX_COST ( GRAPH G, GRAPH_VERTEX V, GRAPH_COSTTYPE cst );
Asettaa verkon G solmun V nimiöksi lbl.
Aikavaativuus: O(1).
void GRAPH_ASSIGN_VERTEX_LABEL ( GRAPH G, GRAPH_VERTEX V, GRAPH_LABELTYPE lbl );
Asettaa verkon G kaaren E väriksi col.
Aikavaativuus: O(1).
Asettaa verkon G kaaren E painoksi cst.
Aikavaativuus: O(1).
void GRAPH_ASSIGN_EDGE_COST ( GRAPH G, GRAPH_EDGE V, GRAPH_COSTTYPE cst );
Asettaa verkon G kaaren E nimiöksi lbl.
Aikavaativuus: O(1).
void GRAPH_ASSIGN_EDGE_LABEL ( GRAPH G, GRAPH_EDGE V, GRAPH_LABELTYPE lbl );
Palauttaa tiedon siitä löytyykö verkon G solmujen V1 ja V2
väliltä kaari. Mikäli solmusta välillä on kaari, palautetaan true (!=0), muutoin
false (0).
Aikavaativuus: O(1)
int GRAPH_IS_ADJACENT ( GRAPH G, GRAPH_VERTEX V1, GRAPH_VERTEX V2 );
Aloittaa verkon G läpikäynnin i ("iterator"), ja
palauttaa verkosta jonkin solmun. Jos verkossa ei ole solmuja, palauttaa NULL.
Aikavaativuus: O(1)
GRAPH_VERTEX GRAPH_VERTEX_ANY ( GRAPH G, GRAPH_VERTEX_ITERATOR i );
Palauttaa verkon G läpikäynnin i mukaan verkosta jonkin vielä
käsittelemättömän solmun (määrittelemätön mikäli kaikki solmut on jo käsitelty).
Aikavaativuus: O(1)
GRAPH_VERTEX GRAPH_VERTEX_ANOTHER ( GRAPH G, GRAPH_VERTEX_ITERATOR i );
Palauttaa tiedon siitä, onko verkon G läpikäynti i vielä kesken. Jos
läpikäynti on vielä kesken, palautetaan true(!=0), muuten false(0).
Aikavaativuus: O(1)
int GRAPH_VERTEX_ITERATING ( GRAPH G, GRAPH_VERTEX_ITERATOR i );
Aloittaa verkon G läpikäynnin i ("iterator"), ja
palauttaa verkosta jonkin kaaren. Jos verkossa ei ole kaaria, palauttaa NULL.
Aikavaativuus: O(|V|)
GRAPH_EDGE GRAPH_EDGE_ANY ( GRAPH G, GRAPH_EDGE_ITERATOR i );
Palauttaa verkon G läpikäynnin i mukaan verkosta jonkin vielä
käsittelemättömän kaaren (määrittelemätön mikäli kaikki kaaret on jo käsitelty).
Aikavaativuus: O(|V|)
Palauttaa tiedon siitä, onko verkon G läpikäynti i vielä kesken. Jos
läpikäynti on vielä kesken, palautetaan TRUE(!=0), muuten FALSE(0).
Aikavaativuus: O(1)
int GRAPH_EDGE_ITERATING ( GRAPH G, GRAPH_EDGE_ITERATOR i );
Aloittaa verkon G läpikäynnin i ("iterator"), ja
palauttaa jonkin solmun V naapurisolmuista. Jos sellaisia ei ole, palauttaa NULL.
Aikavaativuus: O(1)
GRAPH_VERTEX GRAPH_VERTEX_ANY_ADJ ( GRAPH G, GRAPH_VERTEX V , GRAPH_VERTEX_ITERATOR i);
Palauttaa verkon G läpikäynnin i mukaan verkosta jonkin solmun V
vielä käsittelemättömän naapurisolmun (määrittelemätön mikäli kaikki naapurit on
jo käsitelty).
Aikavaativuus: O(1)
GRAPH_VERTEX GRAPH_VERTEX_ANOTHER_ADJ (GRAPH G, GRAPH_VERTEX V, GRAPH_VERTEX_ITERATOR i);
Palauttaa tiedon siitä, onko verkon G solmun V viereisten solmujen
läpikäynti i vielä kesken. Jos läpikäynti on vielä kesken, palautetaan
TRUE(!=0), muuten FALSE(0).
Aikavaativuus: O(1)
int GRAPH_VERTEX_ITERATING_ADJ ( GRAPH G, GRAPH_VERTEX V, GRAPH_VERTEX_ITERATOR i);
Aloittaa verkon G läpikäynnin i ("iterator"), ja
palauttaa jonkin kaaren E naapurikaarista, eli kaarista jotka lähtevät samasta
solmusta. Jos sellaisia ei ole, palauttaa NULL.
Aikavaativuus: O(1)
GRAPH_EDGE GRAPH_EDGE_ANY_ADJ ( GRAPH G, GRAPH_EDGE E, GRAPH_EDGE_ITERATOR i );
Palauttaa verkon G läpikäynnin i mukaan verkosta jonkin kaaren E
vielä käsittelemättömän naapurikaaren (määrittelemätön mikäli kaikki
naapurikaaret on jo käsitelty).
Aikavaativuus: O(1)
GRAPH_EDGE GRAPH_EDGE_ANOTHER_ADJ ( GRAPH G, GRAPH_EDGE E, GRAPH_EDGE_ITERATOR i );
Palauttaa tiedon siitä, onko verkon G kaaren E viereisten kaarten
läpikäynti i vielä kesken. Jos läpikäynti on vielä kesken, palautetaan
TRUE(!=0), muuten FALSE(0).
Aikavaativuus: O(1)
int GRAPH_EDGE_ITERATING_ADJ (GRAPH G, GRAPH_EDGE E, GRAPH_EDGE_ITERATOR i );