数据结构学习——图的邻接表(无向图,带权值有向图)

本文介绍了数据结构中的邻接表,作为无向图和带权值有向图的存储方式,相较于邻接矩阵,邻接表更节省空间。通过邻接点的链表结构和顶点数组进行存储,并展示了如何添加权值属性。最后,给出了创建邻接表的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

邻接表是数组与链表相结合的存储方法,相比于顺序存储结构(邻接矩阵),节省空间。
来个小例子(无向图):
图图1

图1邻接表的结构:
这里写图片描述
邻接表用链表来存储邻接点(分两个域,一个存顶点下标,一个存下一个邻接点的引用),通过一个类(我用了内部类,所以是private)定义邻接点:

private class AdgvexType {
        int verNum = -1;//存储顶点数组下标,默认零
        AdgvexType adg = null;//存储下一个邻接点的引用

        public int getVerNum() {
            return verNum;
        }

        public void setVerNum(int verNum) {
            this.verNum = verNum;
        }

        public int getWeightNum() {
            return weightNum;
        }

        public void setWeightNum(int weightNum) {
            this.weightNum = weightNum;
        }

        public AdgvexType getAdg() {
            return adg;
        }

        public void setAdg(AdgvexType adg) {
            this.adg = adg;
        }

        @Override
        public String toString() {
            return "AdgvexType [verNum=" + verNum + ", weightNum=" + weightNum
                    +  "]";
        }

    }

邻接表用数组存储图的顶点,数组中每个元素包含两个域(一个存顶点,一个存它第一个临界点的引用),定义顶点数组:

private VertexeType[] verArr;// 顶点数组

    // 顶点数据
    private class VertexeType {
        String vertexe = null;//存储顶点
        AdgvexType adg = null;//存储第一个邻接点的引用

        public VertexeType() {
        }

        public VertexeType(String vertexe) {
            this.vertexe = vertexe;
        }

        public String getVertexe() {
            return vertexe;
        }

        public void setVertexe(String vertexe) {
            this.vertexe = vertexe;
        }

        public AdgvexType getAdg() {
   
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值