实现堆栈和单链表的最佳方式是什么?我应该有两个结构,其中第一个包含节点的结构( value(s) , pointer ),另一个包含重要节点(顶部或头部,尾部和大小,如果需要)或者我应该只使用节点结构?
我的意思是:
案例一:
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;
最佳答案
您的案例 2 具有更好的类型安全性优势。当您使用 Node 或 Stack 代替 List 等时,C 编译器将进行检测。
相反,当存在可以同时处理 Stack 和 List 的函数时,您将需要它们的专门版本。当然,它们可以共享一个基于 Node 的通用低级实现。您必须为类型安全增加一些管理开销,但这通常是值得的。
关于c - 实现堆栈和单链表的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36878303/