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;                        
    }
  • 相关阅读:
    window字体安装方法,fonts安装方法
    在Vmware虚拟机中安装Mac OS
    winbox教程
    eclipse activiti 使用 集成 插件
    高等数学 1
    电路 分析 学习 书 的 推荐
    eclipse 替代 keil (二) eclipse 和 jdk 安装
    eclipse 替代 keil (三) 新建项目
    Spark Stuctured Streaming(实时流计算:Structured Streaming) windows开发环境搭建
    Hadoop HA一键启动,一键关闭脚本
  • 原文地址:https://www.cnblogs.com/zzuuoo666/p/12100709.html
Copyright © 2011-2022 走看看