Foreach c# là gì

      46

Example

We can also use macros for making code easier lớn read & write. For example we can implement macros for implementing the foreach construct in C for some data structures lượt thích singly- and doubly-linked lists, queues, etc.

Bạn đang xem: Foreach c# là gì

Here is a small example.

#include #include struct LinkedListNode int data; struct LinkedListNode *next;;#define FOREACH_LIST(node, list) for (node=list; node; node=node->next)/* Usage */int main(void) struct LinkedListNode *các mục, **pcác mục = &list, *node; int i; for (i=0; idata = i; (*plist)->next = NULL; pmenu = &(*plist)->next; /* printing the elements here */ FOREACH_LIST(node, list) printf("%d ", node->data); }You can make a standard interface for such data-structures và write a generic implementation of FOREACH as:

#include #include typedef struct CollectionItem_ int data; struct CollectionItem_ *next; CollectionItem;typedef struct Collection_ /* interface functions */ void* (*first)(void *coll); void* (*last) (void *coll); void* (*next) (void *coll, CollectionItem *currItem); CollectionItem *collectionHead; /* Other fields */ Collection;/* must implement */void *first(void *coll) return ((Collection*)coll)->collectionHead;/* must implement */void *last(void *coll) return NULL;/* must implement */void *next(void *coll, CollectionItem *curr) return curr->next;CollectionItem *new_CollectionItem(int data) CollectionItem *nhà cửa = malloc(sizeof(CollectionItem)); item->data = data; item->next = NULL; return item;void Add_Collection(Collection *coll, int data) CollectionItem **item = &coll->collectionHead; while(*item) thành phầm = &(*item)->next; (*item) = new_CollectionItem(data);Collection *new_Collection() Collection *nc = malloc(sizeof(Collection)); nc->first = first; nc->last = last; nc->next = next; return nc;/* generic implementation */#define FOREACH(node, collection) for (node = (collection)->first(collection); node != (collection)->last(collection); node = (collection)->next(collection, node))int main(void) Collection *coll = new_Collection(); CollectionItem *node; int i; for(i=0; idata); }To use this generic implementation just implement these functions for your data structure.

1.

Xem thêm: Phân Tích Lợi Nhuận Khác Là Gì ? Sự Khác Biệt Giữa Lợi Nhuận Và Tiền Lãi

void* (*first)(void *coll);2. void* (*last) (void *coll);3. void* (*next) (void *coll, CollectionItem *currItem);
*
PDF - Download C Language for không tính tiền
This modified text is an extract of the original Stack Overflow Documentation created by following contributors và released under CC BY-SA 3.0