|
本题添加时间:2023/4/3 12:59:00 |
|
圆梦客服:王老师 19139051760(微信同号) 19139051760(微信同号) |
|
分别以邻接矩阵和邻接表作为存储结构,实现以下图的基本操作: ① 增加一个新顶点v,InsertVex(G, v); ② 删除顶点v及其相关的边,DeleteVex(G, v); ③ 增加一条边,InsertArc(G, v, w); ④ 删除一条边,DeleteArc(G, v, w)。
|
答案是:假设图G为有向无权图,以邻接矩阵作为存储结构四个算法分别如下: ① 增加一个新顶点v Status Insert_Vex(MGraph &G, char v)//在邻接矩阵表示的图G上插入顶点v { if(G.vexnum+1)>MAX_VERTEX_NUM return INFEASIBLE; G.vexs[++G.vexnum]=v; return OK; }//Insert_Vex ② 删除顶点v及其相关的边, Status Delete_Vex(MGraph &G,char v)//在邻接矩阵表示的图G上删除顶点v { n=G.vexnum; if((m=LocateVex(G,v))<0) return ERROR; G.vexs[m]<->G.vexs[n]; //将待删除顶点交换到最后一个顶点 for(i=0;i Status Insert_Arc(MGraph &G,char v,char w)//在邻接矩阵表示的图G上插入边(v,w) { if((i=LocateVex(G,v))<0) return ERROR; if((j=LocateVex(G,w))<0) return ERROR; if(i==j) return ERROR; if(!G.arcs[j].adj) { G.arcs[j].adj=1; G.arcnum++; } return OK; }//Insert_Arc ④ 删除一条边 Status Delete_Arc(MGraph &G,char v,char w)//在邻接矩阵表示的图G上删除边(v,w) { if((i=LocateVex(G,v))<0) return ERROR; if((j=LocateVex(G,w))<0) return ERROR; if(G.arcs[j].adj) { G.arcs[j].adj=0; G.arcnum--; } return OK; }//Delete_Arc 以邻接表作为存储结构,本题只给出Insert_Arc算法.其余算法类似。 Status Insert_Arc(ALGraph &G,char v,char w)//在邻接表表示的图G上插入边(v,w) { if((i=LocateVex(G,v))<0) return ERROR; if((j=LocateVex(G,w))<0) return ERROR; p=new ArcNode; p->adjvex=j;p->nextarc=NULL; if(!G.vertices.firstarc) G.vertices.firstarc=p; else { for(q=G.vertices.firstarc;q->q->nextarc;q=q->nextarc) if(q->adjvex==j) return ERROR; //边已经存在 q->nextarc=p; } G.arcnum++; return OK; }//Insert_Arc
出自
河南理工大学数据结构 联大系统
太原理工大学
|
更多试题>>>>
1、设一棵二叉树的中序遍历序列为BDCA,后序遍历序列为DBAC,则这棵二叉树的先序遍历序列为____________________。
2、由树转化成二叉树,该二叉树的右子树不一定为空。
A.正确
B.错误
3、输出二叉树中从每个叶子结点到根结点的路径。
4、求任意二叉树中第一条最长的路径长度,并输出此路径上各结点的值。
5、用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目。
|