gpt4 book ai didi

c++ - 是否可以在 C++ 中创建堆栈上的链表?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:56 28 4
gpt4 key购买 nike

几周前我才开始学习 C++。所以现在我有这个学校作业问题,要求我在不使用“new”或任何与动态分配内存有关的情况下实现链表(并且不能使用来自 STL 的任何 ADT)。教授说一切都可以在堆栈上完成,但是怎么做呢?我从周五开始就一直在做这件事,但仍然坚持下去,但运气不佳。

它说:保留一堆正在读取的文件名。堆栈使用以下数据结构:

struct Node { 
string fileName;
Node *link;
};

我试图避免使用 new,但当我将列表的头部传递给递归方法调用时,它总是给我“段错误”或“总线错误”。关于如何解决这个问题的任何想法??

最佳答案

堆和栈的区别主要是(不仅如此,主要是为了这个问题)内存分配的位置和释放方式。当你想在堆上分配一个节点时,你说 new Node 系统会为你提供内存,跟踪哪些 block 被使用,哪些是空闲的,并为你提供意味着一旦你不再需要它就释放一个 block 。

但是您也可以在堆栈的数组中拥有一个节点池。 (自动变量是堆栈变量。)您可以从该池中“分配”,跟踪数组中哪些节点被使用,哪些是空闲的,并将未使用的节点标记为您不再需要它们的空闲节点。但是,由于数组的大小在编译时是固定的,这意味着您的列表有最大长度。

关于c++ - 是否可以在 C++ 中创建堆栈上的链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556581/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com