为什么链表使用指针而不是在节点内存储节点

2024-04-06

我之前在 Java 中广泛使用过链表,但我对 C++ 还很陌生。我正在使用项目中提供给我的这个节点类,效果很好

class Node
{
  public:
   Node(int data);

   int m_data;
   Node *m_next;
};

但我有一个问题没有得到很好的回答。为什么需要使用

Node *m_next;

指向列表中的下一个节点而不是

Node m_next;

我明白最好使用指针版本;我不想争论事实,但我不知道为什么这样更好。关于指针如何更好地分配内存,我得到了一个不太明确的答案,我想知道这里是否有人可以帮助我更好地理解这一点。


这不仅是更好的方法,而且是唯一可能的方法。

如果您存储了Node object在其自身内部,什么会sizeof(Node)是?这将是sizeof(int) + sizeof(Node),这将等于sizeof(int) + (sizeof(int) + sizeof(Node)),这将等于sizeof(int) + (sizeof(int) + (sizeof(int) + sizeof(Node)))等至无穷大。

这样的物体是不可能存在的。它是不可能的.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么链表使用指针而不是在节点内存储节点 的相关文章

随机推荐

  • 在单调递增然后递减的序列 cera 中查找一个数

    查找单调增加然后单调减少的序列中的最大值或最小值可以在 O log n 内完成 但是 如果我想检查一个数字是否存在于这样的序列中 这也可以在 O log n 中完成吗 我认为这是不可能的 考虑这个例子 1 4 5 6 7 10 8 3 2
  • 如何创建元组数组?

    我知道要在 C 中创建元组 我们使用以下格式 Tuple
  • Azure SQL 数据库 Bacpac 本地还原

    我使用 Azure 管理控制台中的 导出 选项创建了 Azure SQL 数据库的 BACPAC 备份 将其下载到我的计算机后 我对如何将其恢复到本地 SQL Server 实例有点困惑 我遇到了 DacImportExportCli 工具
  • 在 Visual Studio 中使用 FFmpeg

    我正在尝试在 Visual Studio 2010 的 C 项目中使用 FFmpeg 我想将这些库作为静态链接文件包含在内 简单的程序如libavcodec api example c http cekirdek pardus org tr
  • 寻找Excel自定义函数工具提示

    这个问题已经被asked https stackoverflow com questions 4262421 how to put a tooltip on a user defined function before https stac
  • 关于映射和迭代器的理论澄清

    如果我有一个带有地图作为私有成员的类 例如 class MyClass public MyClass std map
  • 添加样式以回显[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想为这个 php echo 添加一
  • 如何从 javascript 数组推送 JSON 中的元素

    我想将 javascript 数组值添加到 JSON 值对象中 其他元素也替换了我的元素 如收件人 主题 消息 我得到的 Json 如下 下面是我的代码 var BODY recipients values subject title bo
  • 在 MySQL 中获取下个月的第一个和最后一个日期

    如何在 where 子句中使用下个月的第一天和最后一天 Use SELECT DATE SUB LAST DAY DATE ADD NOW INTERVAL 1 MONTH INTERVAL DAY LAST DAY DATE ADD NO
  • FileOutputstream.close() 并不总是将字节写入文件系统?

    看完之后这个答案 https stackoverflow com questions 7849528 fileoutputstream close is really slow when writing large file 7849941
  • 设置 WebRequest 的正文数据

    我正在 ASP NET 中创建一个 Web 请求 我需要向正文添加一堆数据 我怎么做 var request HttpWebRequest Create targetURL request Method PUT response HttpW
  • GitHub 的 GPG 公钥是什么?

    如果您通过 GitHub 网站进行编辑 或合并拉取请求 则生成的提交将自动使用 GitHub 的 GPG 密钥进行签名 它看起来像这样 我希望拥有完整的公钥 以便我可以将其添加为我的系统上的可信密钥 GitHub 的 GPG 公钥是什么 G
  • 在 Windows 记事本的 Python 中创建 UTF-16 换行符

    在 Ubuntu 中运行的 Python 2 7 中 这段代码 f open testfile txt w f write Line one encode utf 16 f write u r n encode utf 16 f write
  • HTML LocalStorage 中的数据在其他窗口/选项卡中可用所需的时间

    我有一个使用 HTML LocalStorage 的网页 同时打开此页面的多个选项卡 窗口是很常见的 由于这些都使用相同的 LocalStorage 并且 LocalStorage 不提供事务或类似功能 因此我想实现某种形式的互斥 以防止不
  • 我如何将变量传递给谷歌云函数

    我目前正在创建一个云任务 它将定期将新数据导入到 automl 数据集中 目标是 GCP 云函数 http 目标 因为我不想在云函数中对数据集 ID 进行硬编码 我希望它接受来自 Web UI 的数据集 ID 因此我用这种方式输入flask
  • Ionic 本机 Google 地图 Android 无法正常工作

    我必须在我的项目中添加带有 Google 地图的视图 我跟着官方 ionic 本机 Google 地图文档 https ionicframework com docs native google maps 但它不起作用 我将背景颜色粉红色分
  • Hibernate:如何进行 EXISTS 查询? (不是子查询)

    例如 EXISTS SELECT FROM table WHERE 如何使用 Hibernate 进行这样的查询 HQL不允许使用exists陈述 UPD从 Hibernate 5 开始它支持将其作为 WHERE 中的谓词 https do
  • $this 关键字的含义是什么?

    请解释一下这是为了什么 this and gt 代表 让我们以下面的代码为例 this gt convertNamesToCaptions order formId this 指的是当前对象 手册说 当从对象上下文中调用方法时 伪变量 th
  • Ruby 代码块与 javascript 匿名函数的区别

    我正在做我的第一次实习 一切进展顺利 我正在努力跟上其他程序员谈论的一切 有一天 一位高级程序员告诉我 Ruby 将代码块直接传递给函数的能力比在 JavaScript 中使用匿名函数要好得多 据我了解 JS 匿名函数完全相同 只是通过变量
  • 为什么链表使用指针而不是在节点内存储节点

    我之前在 Java 中广泛使用过链表 但我对 C 还很陌生 我正在使用项目中提供给我的这个节点类 效果很好 class Node public Node int data int m data Node m next 但我有一个问题没有得到