zoukankan      html  css  js  c++  java
  • 关于图的算法应用总结

    //顶点的度
    //邻接表
    int count_Degree(Graph G,int v){
        int count=0;
        ENode *p;
        for(p=adjList[v].firstarc;p!=null;p=p->nextarc){
            count++;
        }//出度
        for(int i=0;i<G.vertices;i++){
            if(i==v) continue;
            for(p=adjList[i].firstarc;p!=null;p=p->nextarc){
                if(p->adjvex==v){
                    count++;
                    break;
                }
            }
        }//入度
        return count;
    }
    //有向图 邻接表插入 邻接表的插入边 (无向图插入需要两个)
    bool Insert(Graph *G,int u,int v){
        ENode *p;
        if(u<0 || v< 0 || u>G->vertices-1 || v>G->vertices-1 || u==v) 
            return false;
        if(isExist(G,u,v)) return false;  //此边已存在
        p = (ENode*)malloc(sizeof(ENode));
        p->adjVex=v;
        p->nextarc=G->adjList[u].firstarc;//将新的边结点插入单链表的最前面
        G->adjList[u].firstarc=p;
        G->ecount++;//边加1
        return true;
    }
    //有向图 邻接表的删除边 (无向图插入需要两个)
    bool Remove(Graph *G,int u,int v){
        ENode *p,*q;
        if(u<0 || v< 0 || u>G->vertices-1 || v>G->vertices-1 || u==v)  
            return false;
        p=G->adjList[u];
        while(p!=null && p->adjVex!=v){//查找待删除边是否存在
            q=p;
            p=p->nextArc;
        }
        if(p==null) return false;          //p为空,待删除边不存在
        if(G->adjList[u].firstarc==p){ 
            G.adjList[i].firstarc==p->nextarc;
        }else{
            q->nextarc=p->nextarc; 
        }
        free(p);
        G->ecount--;
        return true;
    }
    //邻接表销毁 邻接表的撤销(改成了int型,有返回值)
    int Destory(Graph *G){
        ENode *p,*q;
        for(int i=0;i<G->vertices;i++){
            p=G->adjList[i].firstarc; //指针p指向顶点i的单链表的第一个边结点
            q=p;
            while(p){      //释放顶点i的单链表中所有边结点
                p=p->nextarc;
                free(q);
                q=p;
            }
        }
        free(G->adjList);       //释放一维指针数组a的存储空间
        return 1;                        
    }
  • 相关阅读:
    微信 JS SDK 的 chooseImage 接口在部分安卓机上容易造成页面刷新
    规约模式Specification Pattern
    ASP.NET Core 1.0基础之日志
    C# 7 新特性-2
    C# 7 新特性-1
    ASP.NET Core 1.0基础之诊断
    ASP.NET Core 1.0基础之依赖注入
    ASP.NET Core 1.0 基础之配置
    ASP.NET Core 1.0基础之静态文件处理
    FreeSql生产环境自动升级数据库解决方案
  • 原文地址:https://www.cnblogs.com/zzuuoo666/p/12100709.html
Copyright © 2011-2022 走看看