• 关于图的算法应用总结


    //顶点的度
    //邻接表
    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;                        
    }
  • 相关阅读:
    福大软工1816 · 第五次作业
    福大软工1816
    福大软工1816 · 第三次作业
    福大软工1816 · 第二次作业
    福大软工1816 · 第一次作业
    1/10
    福大软工 · 第七次作业
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    2018软工第六次作业
    福大软工1816 · 第五次作业
  • 原文地址:https://www.cnblogs.com/zzuuoo666/p/12100709.html
Copyright © 2020-2023  润新知