什麼是
最好
正確在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