【发布时间】:2020-07-23 00:55:04
【问题描述】:
您好,我正在尝试在 c 中学习和构建数据结构,并且我想将整数逐步存储在堆栈中。 我的结构是这样的:
typedef struct STACK_NODE_s *STACK_NODE;
typedef struct STACK_NODE_s{
STACK_NODE forward;
void *storage;
} STACK_NODE_t;
typedef struct L_STACK_s{
STACK_NODE top;
} L_STACK_t, *L_STACK;
在 while 循环中,我想以整数形式读取和存储我的字符。
//assume that str is an proper string
//assume that we have a linked stack called LS
int i=0;
int temp;
while(str[i]!='\0'){
tmp=str[i]-'0';
push(LS,(void *)&tmp);
}
我知道这不会正常工作,因为我们一遍又一遍地存储同一个变量的地址。 我是否需要分配一个辅助数组才能将它们一一存储,还是有更好的方法来做到这一点?
【问题讨论】:
-
您的堆栈使用
void*存储数据的原因是什么? -
用于类通用库的实现。
-
在这种情况下,您将不得不使用
malloc(或以某种比堆栈更有效的方式动态分配数据)并记住在销毁堆栈时free所有元素 -
@UnholySheep 嗯,我已经习惯了这些地址,但它们仍然让我有些困惑。我会尝试这种方法谢谢。
标签: c data-structures linked-list stack void-pointers