FOREACH C# LÀ GÌ

     

Example

We can also use macros for making code easier khổng lồ read & write. For example we can implement macros for implementing the foreach construct in C for some data structures like singly- và 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 *list, **plist = &list, *node; int i; for (i=0; idata = i; (*plist)->next = NULL; plist = &(*plist)->next; /* printing the elements here */ FOREACH_LIST(node, list) printf("%d ", node->data); }You can make a standard interface for such data-structures & 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 *item = 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ắng lợi = &(*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.

Xem thêm: Sau Sinh Thường Bao Lâu Thì An Được Đồ Nếp ? Đẻ Mổ Sau Bao Lâu Thì Được Ăn Xôi

1.

Xem thêm: Bảng Đt Bất Quy Tắc Đầy Đủ Và Chính Xác Nhất (Có Phiên Âm), Just A Moment

Void* (*first)(void *coll);2. Void* (*last) (void *coll);3. Void* (*next) (void *coll, CollectionItem *currItem);

*
PDF - download C Language for miễn phí
This modified text is an extract of the original Stack Overflow Documentation created by following contributors and released under CC BY-SA 3.0