首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于填充链表的函数,但用于n个列表类型

用于填充链表的函数,但用于n个列表类型
EN

Stack Overflow用户
提问于 2013-06-24 01:33:22
回答 1查看 125关注 0票数 0

所以我想做的是做一个函数,给定一个节点,把它放在最后。事情是这样的,我想做一个能处理我所有列表结构的函数。我该怎么做呢?到目前为止,我成功地编写了一个函数,将节点放在最后,但仅用于一种类型的列表。代码如下:

代码语言:javascript
复制
void putList(PESPECIALIDADE *p){
    int i = 1;
    p->proximo = NULL;
     ptr;
    if(cabecaEspecialidade == NULL){
        p->id=1;
        cabecaEspecialidade = p;
    }
    else{
        for(ptr=cabecaEspecialidade; ptr->proximo != NULL; ptr = ptr->proximo){
            i++;
        }
        p->id=i+1;
        ptr->proximo = p;
        p->proximo=NULL;            
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-24 01:46:45

如果您想要有许多不同内容的列表,一种常见的方法是拥有一个公共的节点结构作为所有列表的基础。

代码语言:javascript
复制
struct base_node
{
    struct base_node *next;
};

然后,在列表使用的所有其他结构中首先使用该结构:

代码语言:javascript
复制
struct some_node_data
{
    struct base_node node;  /* Note: not a pointer */

    /* All other data... */
};

(注意:将基节点结构作为新结构中的成员,这有点像C++继承。)

现在,您可以将指向上述结构的指针转换为指向base_node结构的指针,并使用该指针。

代码语言:javascript
复制
void add_tail(struct base_node **head, struct base_node *node)
{
    /* Add `node` at the end of the list pointed to by `*head` */
}

/* ... */

struct some_node_data *some_data_head = NULL;

struct some_node_data *some_node = malloc(sizeof struct some_node_data);
add_tail((struct base_node *) &some_data_head, (struct base_node *) some_node);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17263413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档