所以我想做的是做一个函数,给定一个节点,把它放在最后。事情是这样的,我想做一个能处理我所有列表结构的函数。我该怎么做呢?到目前为止,我成功地编写了一个函数,将节点放在最后,但仅用于一种类型的列表。代码如下:
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;
}
}发布于 2013-06-24 01:46:45
如果您想要有许多不同内容的列表,一种常见的方法是拥有一个公共的节点结构作为所有列表的基础。
struct base_node
{
struct base_node *next;
};然后,在列表使用的所有其他结构中首先使用该结构:
struct some_node_data
{
struct base_node node; /* Note: not a pointer */
/* All other data... */
};(注意:将基节点结构作为新结构中的成员,这有点像C++继承。)
现在,您可以将指向上述结构的指针转换为指向base_node结构的指针,并使用该指针。
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);https://stackoverflow.com/questions/17263413
复制相似问题