【问题标题】:Best way to implement a stack and a singly-linked-list实现堆栈和单链表的最佳方法
【发布时间】:2016-04-27 00:41:55
【问题描述】:

实现堆栈和单链表的最佳方式是什么?我应该有两个结构,其中第一个将包含节点的结构(值,指针),另一个包含重要节点(顶部或头部,尾部和大小,如果需要)或者我应该只使用节点结构?

这就是我的意思:

案例一:

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;

【问题讨论】:

  • 不,这不是家庭作业。我只是一个初学者,我想知道哪种是最好的编码方式。

标签: c stack implementation singly-linked-list


【解决方案1】:

您的案例 2 具有更好的类型安全性的优势。 C 编译器将检测您何时使用 Node 或 Stack 代替 List,等等。

相反,当有函数可以同时处理堆栈和列表时,您将需要它们的专用版本。当然,它们可以共享一个通用的基于 Node 的低级实现。您必须为类型安全增加一点管理开销,但这通常是值得的。

【讨论】:

    猜你喜欢
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 2016-02-07
    相关资源
    最近更新 更多