哪个是实现堆栈和单链表的最佳方法?我应该有两个结构,其中第一个将包含节点的结构(值(s),指针),另一个结构包含重要的节点(顶部或头部,尾部和大小,如果需要)或我应该只使用节点结构
这就是我的意思:
案例1:
typedef struct node {
int value;
struct node *next;
} Node;
案例2(堆叠):
typedef struct node {
int value;
struct node *next;
} Node;
typedef struct stack {
Node *top;
/* int size; */
} Stack;
案例2(sll):
typedef struct node {
int value;
struct node *next;
} Node;
typedef struct list {
Node *head, *tail;
/* int len; */
} List;
答案 0 :(得分:2)
您的案例2具有更好的类型安全性的优势。 C编译器将检测何时使用节点或堆栈代替List,依此类推。
相反,当有些函数可以处理堆栈和列表时,您将需要它们的专用版本。当然,他们可以共享基于节点的低级别实现。你必须为类型安全带来更多的管理开销,但它通常是值得的。