首页 > 其他 > 详细

图---删除指定弧(邻接表)

时间:2019-10-28 20:19:34      阅读:222      评论:0      收藏:0      [点我收藏+]
typedef struct arcnode    //边节点
{
    int adjvex;
    struct arcnode* nextarc;
    int weight;
}arcnode;
typedef struct vnode //顶点节点
{
    int data;
    arcnode* firstarc;
}vnode, adjlist[100];//邻接表
typedef struct Graph    //图结构
{
    adjlist ver;
    int vernum, arcnum;
}Graph;

void Delete(adjlist g, int i, int j)
{
    arcnode *p,*pre;
    p = g[i].firstarc;
    pre = NULL;
    while (p)
    {
        if (p->adjvex == j)//找到弧
        {
            if (pre == null)//此节点第一条弧
            {
                g[i].firstarc = p->nextarc;
            }
            else//删除操作
            {
                pre->nextarc = p->nextarc;
                free(p);
            }
        }
        else//未找到,继续搜索
        {
            pre = p;
            p = p->nextarc;
        }
    }
    p = g[j].firstarc;//无向图搜索两个方向
    pre = NULL;
    while (p)
    {
        if (p->adjvex == i)//找到弧
        {
            if (pre == null)//此节点第一条弧
            {
                g[j].firstarc = p->nextarc;
            }
            else//删除操作
            {
                pre->nextarc = p->nextarc;
                free(p);
            }
        }
        else//未找到,继续搜索
        {
            pre = p;
            p = p->nextarc;
        }
    }
}

 

图---删除指定弧(邻接表)

原文:https://www.cnblogs.com/yangmenda/p/11754597.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!