c - 实现堆栈和单链表的最佳方式

标签 c stack implementation singly-linked-list

实现堆栈和单链表的最佳方式是什么?我应该有两个结构,其中第一个包含节点的结构( 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/

相关文章:

c - 如何将位数组的元素传递给C中的函数

C - 循环意外结束

php - 单项执行出错

gdb - 测量堆栈指针峰值及其 PC 位置

java - 了解泛型

coding-style - FakeItEasy 回调实现

c - 关和 mongodb

c - 使用 C-icap 删除请求

java - 数组堆栈中的 NullPointerException

c# - 了解事件堆栈大小