我有一个链表,我想写一个将遍历每个节点的函数,并返回适当的元素。像这样:
struct list* returnElements(struct list *head){
for (; head != NULL ; head=head->next){
if (head->field1 == "something")
return head;
}
然后调用returnElements
的函数会以某种方式捕获每个返回的节点,并对其执行某些操作。
这有可能吗?
答案 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;
}
}