gpt4 book ai didi

c - 在c中实现堆栈

转载 作者:太空狗 更新时间:2023-10-29 15:20:21 26 4
gpt4 key购买 nike

我想创建与动态内存分配一起工作的堆栈,但我需要知道哪个更有效:
例如,初始大小为 10,如果需要更多,我会加倍。
或者我可以有一个初始大小 = 1 并为每个新输入添加一个位置。 !?!

int *tmp = malloc(sizeof(int) * 2 * dm->capacity); \* dm->capacity = 10 *\
int *tmp = malloc(sizeof(int));

最佳答案

在需要时加倍效率更高。

如果您为每个压入操作分配一个新数组,那么您所做的工作量与堆栈元素数量的平方成正比(当您压入元素N+1,必须将之前的N个元素复制到新数组中)。

如果您在需要时将数组加倍,那么您所做的副本数与 N 的对数成正比,并且对于任何非平凡大小的堆栈,这要小得多,如您所知。

关于c - 在c中实现堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739110/

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