C中的for循环:返回每个已处理的元素

时间:2015-06-19 18:08:51

标签: c for-loop

我有一个链表,我想写一个将遍历每个节点的函数,并返回适当的元素。像这样:

struct list* returnElements(struct list *head){
     for (; head != NULL ; head=head->next){
         if (head->field1 == "something")
             return head;
     }

然后调用returnElements的函数会以某种方式捕获每个返回的节点,并对其执行某些操作。

这有可能吗?

2 个答案:

答案 0 :(得分:1)

我认为没有这个函数会更容易,所以在调用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
    }
}

答案 1 :(得分:0)

/*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;
    }
}