栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

icoding数据结构——图

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

icoding数据结构——图

6.1

#include 
#include "graph.h" //请勿删除,否则检查不通过


bool del_vertex(ListGraph *G, VertexType v){
    int V =locate_vertex(G,v);
    if(V == -1) return false;
    while(G->vertex[V].firstarc){
        ArcNode *p=G->vertex[V].firstarc;
        if(p->nextarc){
            ArcNode *temp=p->nextarc;
            p->nextarc=temp->nextarc;
            free(temp);
        }else{
            free(p);
            G->vertex[V].firstarc=NULL;
        }
        G->arcnum--;
    }
    G->vexnum--;
    for(int i =V;ivexnum;i++){
        G->vertex[i]=G->vertex[i+1];
    }
    for(int i=0;ivexnum;i++){
        ArcNode *p=G->vertex[i].firstarc,*pNode=NULL;
        ArcNode * temp;
        while(p){
            if(V==p->adjvex){
                if(pNode==NULL){
                    temp =G->vertex[i].firstarc;
                    G->vertex[i].firstarc=p->nextarc;
                }else{
                    pNode->nextarc=p->nextarc;
                    temp=p;
                }
                p=p->nextarc;
                 free(temp);
                 G->arcnum--;
            }else{
                pNode=p;
                p=p->nextarc;
            }
        }
       
    }
    return true;
}
 6.2(这道题博主百思不得其解,最后icoding判了87分)

#include 
#include "graph.h" //请勿删除,否则检查不通过

bool insert_vertex(ListGraph *G, VertexType v){
    if(locate_vertex(G,v) != -1 || G->vexnum + 1 >= MAX_VERTEX_NUM){
        return false;
    }
    
    G->vertex[G->vexnum].data =v;
    G->vertex[G->vexnum].firstarc= NULL;
    G->vexnum++;
    return true;
}


bool insert_arc(ListGraph *G, VertexType v, VertexType w){
    int i, j;
	ArcNode *p,*pre = NULL;
	i = locate_vertex(G, v);
	j = locate_vertex(G, w);
	if(i == -1|| j == -1)
		return false;
	p = G -> vertex[i].firstarc;
	if(p == NULL){
	    G->vertex[i].firstarc = (ArcNode *)malloc(sizeof(ArcNode));
	    G->vertex[i].firstarc->adjvex = w;
	    G->vertex[i].firstarc->nextarc = NULL;
	}else{
	    while (p != NULL){
	        if(p -> adjvex == w){
	            return false;
	        }else{
	            pre = p;
	            p = p -> nextarc;
	        }
	    }
	    pre -> nextarc = (ArcNode *)malloc(sizeof(ArcNode));
	    pre -> nextarc ->adjvex = w;
	    pre -> nextarc ->nextarc =NULL;
	}
	if(G->type == DG){
	    G->arcnum ++;
	    return true;
	}else{
	    p = G->vertex[j].firstarc,pre=NULL;
	    if(p == NULL){
	        G->vertex[j].firstarc = (ArcNode *)malloc(sizeof(ArcNode));
	        G->vertex[j].firstarc->adjvex = v;
	        G->vertex[j].firstarc->nextarc = NULL;
    	}else{
	        while (p != NULL){
	            if(p -> adjvex == v){
	                return false;
	            }else{
	                pre = p;
	                p = p -> nextarc;
	            }
	        }
	    pre -> nextarc = (ArcNode *)malloc(sizeof(ArcNode));
	    pre -> nextarc ->adjvex = v;
	    pre -> nextarc ->nextarc =NULL;
	    }
	    G->arcnum += 2;
	    return true;
	}
 
}
 6.3

#include 
#include "graph.h" // 请不要删除,否则检查不通过
 
bool matrix_insert_vertex(MatrixGraph* G, VertexType v)
{
    //如果v存在或超出最大顶点数
    if (matrix_locate_vertex(G, v) != -1 || G->vexnum + 1 >= MAX_VERTEX_NUM)
        return false;
    G->vertex[G->vexnum] = v;
    G->vexnum++;
	//邻接矩阵增加v的行列
    for (int i = 0; i < G->vexnum; i++)
	{
		G->arcs[i][G->vexnum - 1] = 0;
		G->arcs[G->vexnum - 1][i] = 0;
	}       
    return true;
}
 
bool matrix_insert_arc(MatrixGraph* G, VertexType v, VertexType w)
{
    int V = matrix_locate_vertex(G, v);
    int W = matrix_locate_vertex(G, w);
    if (V == -1 || W == -1)
        return false;
	//有向图
    if (G->type == DG) 
    {
        if (G->arcs[V][W] == 1)
            return false;
        G->arcs[V][W] = 1;
        G->arcnum++;
    } 
    else {
	//无向图
        if (G->arcs[V][W] == 1 || G->arcs[W][V] == 1)
            return false;
        G->arcs[V][W] = 1;
	G->arcs[W][V] = 1;
	G->arcnum++;
    }
    
    return true;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/892535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号