How to write a function to add edges or vertex to a graph

I need to add either a vertex or an edge to a graph, and also sometimes, vertices or edges, or a mixture of the two. How to write a function for this?

• Qiang, this also is forgotten in 6 years:) – kglr Jul 22 '18 at 8:02

Update: Can I add a mixture list of vertices and edges to an existing graph?

Example:

g = Graph[{a, b, c}, {a <-> b, b <-> c, c <-> a},
VertexLabels -> Placed["Name", Center], VertexSize -> Scaled[.1],
VertexLabelStyle -> 18, AspectRatio -> 1];

addToGraph[g, {d, d <-> a, e, h <-> a}] The functions you need are VertexAdd, EdgeAdd, and their relatives VertexDelete and EdgeDelete.

For the graph

g = Graph[{a, b, c}, {a <-> b, b <-> c, c <-> a},
VertexLabels -> Placed["Name", Center], VertexSize -> Scaled[.1],
VertexLabelStyle -> 18, AspectRatio -> 1]  EdgeAdd[g, d <-> a] Deleting an edge

EdgeDelete[g, c <-> a] • Can I add a mixture list of vertices and edges to an existing graph? How to write such a function addToGraph[g, {4, 1 \[UndirectedEdge] 2}] which will add another vertex 4 and an edge between 1 and 2? Thank you. – Qiang Li Feb 17 '12 at 23:16
• I don't know of a built-in function that does that. But, it seems straightforward to do define a composite function that does both: addToGraph[g_, newvertices_List, newedges_List]:= (VertexAdd[g,newvertices];EdgeAdd[g,newedges];). Use it as h=addToGraph[g,{d,e},{a->d,a->e}] to add two new vertices and two new edges to graph g to get a new graph h. – kglr Feb 17 '12 at 23:35
• I guess I wanted to know what if I mixed the newvertices_List and newedges_List in a single list? – Qiang Li Feb 18 '12 at 0:20
• @QiangLi, you need modify slightly to parse the new stuff into vertex and edge parts. For example, let newstuff = {a, a \[UndirectedEdge] b, b \[UndirectedEdge] e, d, b}. Then, you can use newedges=Cases[newstuff, _ \[UndirectedEdge] _]; newvertices = Complement[newstuff, newedges] as the first two steps of the composite function on the right hand side. That is, the function becomes `addToGraph2[g_, newstuff_]:=(newedges=Cases[newstuff, _ \ [UndirectedEdge] _]; newvertices = Complement[newstuff, newedges]; VertexAdd[g,newvertices];EdgeAdd[g,newedges];). – kglr Feb 18 '12 at 0:52
• @QiangLi, you could create a new Graph with the new vertices and edges, and then use GraphUnion. – becko May 20 '12 at 16:17