for循环在C中:返回每个处理过的元素
问题描述:
我有一个链表,并且我想写一个将遍历每个节点的函数,并返回适当的元素。事情是这样的:for循环在C中:返回每个处理过的元素
struct list* returnElements(struct list *head){
for (; head != NULL ; head=head->next){
if (head->field1 == "something")
return head;
}
然后调用returnElements
将总得有赶上每个返回的节点,并用它做什么功能。
这是不是有可能?
答
我觉得没有这个功能会比较容易,所以就在函数内部调用returnElements
我会创建一个新变量并将其设置为输入struct list*
,然后在函数内遍历该列表,并且如果找到一个节点你需要使用,然后用它做什么这样做这样的事情:
struct list *temp = head;
for(; temp != NULL; temp = temp->next) {
if(strcmp(temp->field1, "something") == 0) {
//DO WHATEVER YOU WANT WITH THIS NODE
}
}
答
/*you can change the argument type*/
void getElementInNode(void *list){
/*here you can store the content of the node to a global collection
or whatever you want here*/
}
struct list* returnElements(struct list* head){
extern void getElementInNode(void *p);
struct list* list;
list = head;
if (list == NULL){ printf("Empty\n"); }
while (list != NULL) {
if (list->field1 == "something"){
getElementInNode(list);
}
list = list->next;
}
}
该功能可以将第一个有效元素结束,你可能想每个有效元素存储在列表上或堆放等,并返回,而不是 – hellyale
在'returnElements'中,你可以构造一个新的列表,并返回这个列表。您不能使用单独的退货返回多个元素。 – mattm
您希望每次运行'returnElements'时都返回多个(指向)节点?对的,这是可能的。 –