什么是
最好
正确在C中实现动态调整大小的堆栈的方式?在C中实现动态调整大小的堆栈的最佳方式是什么?
例如,我想的存储器的量分配到一个堆栈,但是当该堆栈得到充分,分配被加倍存储器,以适应新的数据等
我已经堆叠在一分钟使用实施一个简单的void指针数组,这样我就可以存储所有类型的指针,所以它可以重用。当我尝试使用malloc()/ realloc()执行此操作时,由于void指针没有指定大小,因此在执行指针数学时遇到错误。
什么是
最佳
正确在C中实现动态可调整大小的堆栈的方法?
编辑:
我试图像这样的代码(检查删除错误),但我现在明白了,我不能像这样的空指针交互。所以我只是在思考如何合法地做这样的事情。这是一个很大的学习锻炼对我来说,因为我从来没有真正接触过C.
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"
static int index = 0;
void* CreateStack(void)
{
void *stack = malloc(INITIAL_STACK_SIZE);
return stack;
}
void* Pop(void *stack)
{
return stack + index--;
}
void Push(void *stack, void *value)
{
*(stack + index) = value;
}
void FreeStack(void *stack)
{
free(stack);
}
请张贴一些代码。指针本身必须占用固定数量的内存才能存储,而不管它们指向什么。 – 2010-01-12 22:57:57
你是什么意思的“最好”? – 2010-01-12 23:09:14
基本上有两种方法:1)使用增长数组,2)使用链表。什么对你最好(或者是正确的)取决于你需要什么。 – MAK 2010-01-14 21:57:41