【问题标题】:How is generic list manipulation function written?通用列表操作函数是如何编写的?
【发布时间】:2012-12-18 05:49:05
【问题描述】:

我是编程初学者,请对我放轻松,我发现我的问题很难得到答案。我无法理解复杂的代码。有人可以用简单的编码解释一下generic list manipulation function written which accepts elements of any kind?@ 提前谢谢。

【问题讨论】:

  • 不幸的是,C 对于泛型编程来说并不是一个很好的语言
  • 这个BOOK可以帮助你很多,还有一个code
  • @GrijeshChauhan 非常感谢

标签: c function generic-list


【解决方案1】:

这通常使用 void 指针来完成:

typedef struct node {
  struct node *next;
  void *data;
} node;

node *insert(node *list, void *data) {
}

node *delete(node *list, node *to_delete) {
}

这样的操作函数不依赖于数据的实际类型,因此它们可以通用地实现。例如,您可以为上面的数据字段创建一个数据类型结构体:

typedef struct data {
  int type;
  void *data;
} data;

/* .... */
data d;
d.type = INT;
d.data = malloc(sizeof(int));
node n = {NULL, (void*)&data);

【讨论】:

  • 谢谢。为您的时间 +1。
【解决方案2】:

看起来您需要一个异构列表。以下几点建议:

使列表节点的数据元素成为一个通用结构,其中包含数据类型和数据的指示符。

    /** This should be your data node **/
    struct nodedata
    {
      int datatype;
      void *data;
    };    

    /** This should be your list node **/
    struct listnode
    {
      struct nodedata *data;
      struct listnode *next;
    };

使用上述结构,可以存储不同类型的数据。 使用函数指针进行比较函数或根据数据类型调用不同的函数。

【讨论】:

  • 谢谢。为您的时间 +1。
猜你喜欢
  • 2012-10-01
  • 2022-08-11
  • 2021-12-28
  • 2010-09-24
  • 2021-10-02
  • 1970-01-01
  • 2010-09-12
  • 2014-05-10
  • 2021-12-11
相关资源
最近更新 更多