• 考研之图的遍历


    我觉得我在学英语。arc 弧 node 点 graph 图
    以下代码都是连接表访问
    typedef struct arcnode//边节点
    {
        int adjvex;
        struct arcnode *nextarc;
        int info;
        
    }arcnod
    //我们去想象一个图,边是不是连接着2个点。和可能需要长度。 adjvex-邻接点域也就是他指向一个节点,那么我们这里用下一条边的指针。
    ps :那个info是information的缩写。
    typedef
    struct vnode//点节点
    {
    char data; arcnode *fristarc; }vnode;

    //接下来就是点。我们的点节点不一定是1234也有可能是ABC呀我们就需要一个去存信息。
    点链接的是边。还需要下一个边。
    int visit[1000]; typedef struct Agraph//图节点 { vnode adjlist[maxSize]; int n,e; }Agraph;
    就是一张图。adjlist——连接表。这个连接表是maxsize个的点组成,在保存一个节点数和边数。

    void dfs(Agraph *G,int v)
    {
        arcnode *p;
        visit[v]=1;
        Visit(v);//漏了;
        p=G->adjlist[v].fristarc;
        if(p!=NULL)
        {
            if(visit[p->adjvex]==0)
                dfs(G ,p->adjvex);
            p=p->nextarc;
        }
        
    }
    //深度优先遍历。搜到底为止,相当于树的前序遍历,防止重复遍历需要一个visit标记。visit=1访问完成。
    void  bfs(Agraph *G,int v)
    {
        Visit(v);
        visit[v]=1;
        arcnode *p;
        int queue[maxSize],front=0,rear=0;
        rear=(rear+1)%maxSize;
        queue[rear]=v;
        while(rear!=front)
        {
            front=(front+1)%maxSize;
            int temp=queue[front];
            p=G->adjlist[temp].fristarc;
            if(visit[temp]==0)
            {
                Visit(temp);
                visit[temp]=1;
                rear=(rear+1)%maxSize;
                queue[rear]=p->adjvex;
            }
            p=p->nextarc;
        }
        
        
    }
    广度优先遍历。搜到底为止,相当于树的层次遍历,防止重复遍历需要一个visit标记。visit=1访问完成。每到一个结点若没有遍历过就入队列。直到队列空。
     
  • 相关阅读:
    关于Qt国产化系统开发的几点总结
    C#和Qt实现的对于异常处理的一个使用策略
    echarts 自定义省份区块颜色的两种方法
    获取某个文件下的.vue文件
    仿写单选框/多选框
    重置对象属性
    elementUI之树形数据Table遇到的问题
    sass使用记录
    koa的使用记录
    六顶思想帽
  • 原文地址:https://www.cnblogs.com/2014slx/p/11131190.html
Copyright © 2020-2023  润新知