图的邻接表实现中有关链表的问题

img


请问标黄的这里为什么前面用 -> 这个符号,后面用 . 这个符号,这两个符号的使用有什么区别吗

-> 表示 通过 对象或结构体的指针访问 对象或结构体的成员
. 用于对象或结构体变量 直接访问对象或结构体的成员

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7692474
  • 你也可以参考下这篇文章:设计一个函数,既能计算圆的周长也能计算圆的面积(分别用指针和引用实现)
  • 除此之外, 这篇博客: 【魔方贴图三阶】中的 目前只写了六个面,目前只是简单的贴出六个面,后期会逐渐完善剩下的,比如魔方每个面之间的转动,以及还原前后的判断,还有开始前魔方随机打乱等 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 提示:以下是本篇文章正文内容,下面案例可供参考

  • 您还可以看一下 陈立臣老师的就业软件开发工程师的秘籍课程中的 不可错过的软件工程师面试秘籍小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以回答这个问题。

    在邻接表中,图的每个节点用一个链表来表示其邻居节点。每个链表节点存储其邻居节点的标号,即节点在图中的编号。在链表节点的定义中,"->"符号表示指向下一个节点的指针(即节点之间的关系),而"."符号表示节点内部的属性(即节点的标号)。这两个符号在邻接表实现中的作用是不同的。

    在链表节点的定义中,"->"符号连接的是两个链表节点,表示它们之间的关系,即一个链表节点指向下一个链表节点。而"."符号连接的是节点内部的属性,表示节点的标号。这两个符号的使用不同,但都非常重要,是表示图的邻接关系的核心。

    具体实现方案如下:

    定义链表节点,包含节点标号和指向下一个节点的指针:

    struct Node{ int val; //节点标号 Node* next; //指向下一个节点的指针 };

    定义邻接表,包含节点数量和每个节点的链表头指针:

    const int MAXN = 1000; //节点最大数量 struct Graph{ int n; //节点数量 Node* head[MAXN]; //每个节点的链表头指针 };

    初始化邻接表,每个节点的链表头指针指向空:

    void init(Graph& G, int n){ G.n = n; //设置节点数量 for(int i=0; i<n; i++){ G.head[i] = NULL; //每个节点的链表头指针初始为空 } }

    添加边,以无向图为例,将两个节点互相添加到彼此的邻居链表中:

    void addEdge(Graph& G, int u, int v){ Node* p = new Node; //创建一个链表节点 p->val = v; //设置节点标号 p->next = G.head[u]; //将新节点插入到u的邻居链表的头部 G.head[u] = p; //更新u的邻居链表的头指针 p = new Node; //同理,为v创建一个链表节点 p->val = u; p->next = G.head[v]; G.head[v] = p; }

    以上是实现邻接表的基本思路和步骤,使用"->"符号连接链表节点来表示节点之间的关系,使用"."符号连接节点内部的属性来表示节点的标号。如果需要实现其他的邻接表操作,可以以此为基础进行扩展和修改。