c++ 邻接表数据结构的实现
怪我咯
怪我咯 2017-04-17 13:39:25
[C++讨论组]

我想写出邻接表的实现,adjacency_list_vnode是图中每一个点的存储结构,我在adjacency_list中声明了一个指向adjacency_list_vnode数组的指针,因为我希望能够根据点的数量动态生成指定大小的邻接表,但是在初始化函数initAdjacencyList(int v)中好像不能通过vlist[i]的形式访问到每一个adjacency_list_vnode,麻烦大家帮忙看看是什么问题;另外linklist是我写的另一个类,有创建插入删除节点的功能,被每一个adjacency_list_vnode中的p指针指向,我这样写有没有问题呢

private:
    struct adjacency_list_vnode
    {
        int number;
        LinkList<int> *p;
    };
    struct adjacency_list
    {
        int v, e;
        adjacency_list_vnode *vlist;
    }*adjacency_listx;

    void initAdjacencyList(int v)
    {
        adjacency_listx = new adjacency_list;
        adjacency_listx->v = v;
        adjacency_listx->e = 0;    
        adjacency_listx->vlist = new adjacency_list_vnode[v]; //我希望能通过vlist访问vnode数组
        for (int i = 0; i < 1; i++)              
        {    
            adjacency_listx->vlist->number = i;   //!!!!这里有问题
            adjacency_listx->vlist->p = new LinkList<int>; //!!!!这里有问题
        }
    }
public:
    GraphDataStructure(int v)
    {
        initAdjacencyList(v);
    }
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
ringa_lee

我没有实际运行你的代码,不过发现了2个问题:

for (int i = 0; i < 1; i++)              
{    
    adjacency_listx->vlist->number = i;   //!!!!这里有问题
    adjacency_listx->vlist->p = new LinkList<int>; //!!!!这里有问题
}      

循环控制条件i < 1不对吧? 应该是 i < v, 循环体赋值语句应该是下面这样

for (int i = 0; i < v; i++)              
{    
    adjacency_listx->vlist[i].number = i;   //!!!!这里有问题
    adjacency_listx->vlist[i].p = new LinkList<int>; //!!!!这里有问题
}   
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号