我明天有一个作业,并被要求制作一个动态(可调整大小)堆栈,以节省字符。
这件事一直让我发疯,整天都在做这件事。我使用标准库完成了它,它完成了。但似乎无法弄清楚如何在没有 malloc 的情况下分配内存 .. 帮助将不胜感激。这些是我使用过的一些代码片段(使用 stdlib):
struct STACK
{
int size;
int capacity;
char *memory;
int folder_number;
};
typedef struct STACK stack;
我的主要开始是这样的:
int main()
{
stack mystack;
stack_init(&mystack);
初始化栈函数:
void stack_init(stack *s)
{
s->size=1;
s->capacity=INITIAL_CAPACITY;
s->memory=malloc(s->capacity);
s->memory[0]='\0';
s->folder_number=1;
}
我的程序有各种功能,当我将新字符插入堆栈时,我检查是否已达到最大容量,如果是,我调用以下函数:
void double_memory(stack* s)
{
char *tmp = malloc((s->capacity)*2);
for (int i=0; i<(s->capacity); i++)
tmp[i]=s->memory[i];
free(s->memory);
s->capacity *= 2;
s->memory=tmp;
}
现在,我已经连续尝试了至少 6 个小时,试图找出其他方法(不使用 stdlib.h),在谷歌上搜索了很多,但没有成功。任何帮助或建议都是真的!赞赏。
非常感谢您提前。
编辑:我大约 2 个月前开始上大学,我不了解平台..等等,我们学到的最后两件事是指针,以及关于 malloc 的小信息,b4 我们只是了解了函数 hhh ......,在此之前,非常基本的编码..