76 typedef typename v_type vertex_type;
77 typedef typename v_type::edge_type edge_type;
96 vertices =
new std::vector<vertex_type>(vnum);
134 vertices =
new std::vector<vertex_type>(vnum);
163 for(
unsigned vi = 0; vi <
nverts(); vi++)
176 const vertex_type&
vertex(
unsigned i)
const
193 for (
unsigned i=0; i <
vertex(start).edges.size(); i++)
195 if(
vertex(start).edges[i].end == end)
219 (*vertices)[e.start].edges.push_back(e);
226 (*vertices)[e.end].edges.push_back(e2);
235 bool add_edge(
unsigned int start,
unsigned int end)
242 if( start <
nverts() && end < vertices->size())
250 (*vertices)[start].edges.push_back(e);
258 (*vertices)[end].edges.push_back(e2);
317 std::cout<<"not tested"<<std::endl;
318 vertices->push_back(v);
325 bool contains(edge e){
327 for (std::vector<vertex>::iterator it = vertices.begin(); it != vertices.target(); ++it) {
328 for (std::vector<vertex>::iterator i = it.edges.begin(); i != it.edges.target(); ++i) {
337 bool contains(vertex v){
339 for (unsigned int i = 0; i < vertices->size(); i ++) {
340 if ( v == (*vertices)[i])
349 // outputs the list as String
351 for (unsigned int i = 0; i < vertices->size(); i++){
352 std::cout<<i<<":[ "; // index of Vertex
353 for (unsigned int j = 0 ; j < (*vertices)[i].edges.size();j++){
354 std::cout<<(*vertices)[i].edges[j].start << "," << (*vertices)[i].edges[j].target << " "; // start and end of edges
356 std::cout<<"]"<<std::endl;
363 void remove(int start, int target){
365 for (unsigned int i = 0;i< (*vertices)[start].edges.size(); i++){
366 if((*vertices)[start].edges[i].target == target){
367 std::vector<edge>::iterator it = (*vertices)[start].edges.begin() + i;
368 (*vertices)[start].edges.erase(it);
374 void remove(vertex e){
375 std::cout<<"not implemented"<<std::endl;
380 // delete edges to n (all from n are deleted itself)
381 for(unsigned int i = 0; i< vertices->size(); i++){
382 for (unsigned int j = 0;j< (*vertices)[i].edges.size(); j++){
383 if((*vertices)[i].edges[j].target == n){
384 std::vector<edge>::iterator it = (*vertices)[i].edges.begin() + j;
385 (*vertices)[i].edges.erase(it);
387 // and decrese all edges with start or end > n
388 if((*vertices)[i].edges[j].target > n){
389 (*vertices)[i].edges[j].target -= 1;
391 if((*vertices)[i].edges[j].start > n){
392 (*vertices)[i].edges[j].start -= 1;
397 std::vector<vertex>::iterator it = vertices->begin() + n;