实现堆栈和单链表的最佳方法

时间:2016-04-27 00:41:55

标签: c stack implementation singly-linked-list

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

1 个答案:

答案 0 :(得分:2)

您的案例2具有更好的类型安全性的优势。 C编译器将检测何时使用节点或堆栈代替List,依此类推。

相反,当有些函数可以处理堆栈和列表时,您将需要它们的专用版本。当然,他们可以共享基于节点的低级别实现。你必须为类型安全带来更多的管理开销,但它通常是值得的。