【发布时间】:2012-02-18 11:52:08
【问题描述】:
我想创建一个通用堆栈。我想用链表来实现它。
我创建了这个结构 stack_l:
typedef struct stack
{
void * data;
void (*copy)(void *o);
struct stack *next;
} stack_l;
我有一些问题:
- 结构的第二个字段是指向函数的指针,用于复制新数据(在函数 Push 中通过参数传递)。 Push函数的原型是:
stack_l * Push(stack_l * head, void * d);
- 将指针传递给函数副本的方式是否正确?
- 我必须在函数Push中实现它??
- 是否有必要创建一个函数 NewStack(例如)来初始化结构的字段,或者最好只有一个 Push 函数,如果堆栈为空,则创建第一个元素,如果有则在顶部添加新元素至少一个元素?
- void * 需要用 malloc 分配?
【问题讨论】:
-
显然我还创建了一个 Pop 函数来删除元素。
标签: c data-structures stack linked-list function-pointers