#include <stdio.h> #include <malloc.h> typedef struct _LIST_E *PLIST_E; typedef struct _LIST_E { char datum; PLIST_E pNext; PLIST_E pPrev; } LIST_E, *PLIST_E; typedef void(*PWORK)(PLIST_E); void work(PLIST_E pLe) { pLe->datum='g'; } void foreach (PLIST_E pLe, PWORK _work) { PLIST_E pl; for(pl=pLe;pl!=0;pl=pl->pNext) { _work(pl); } } PLIST_E cl (int i) { int k; PLIST_E pLep,pLen,pLe; pLen=pLep=(PLIST_E)malloc(sizeof(LIST_E)); pLep->pNext=pLep->pPrev=NULL; for(k=1;k<i; k++) { pLe=(PLIST_E)malloc(sizeof(LIST_E)); pLep->pNext=pLe; pLe->pPrev=pLep; pLe->pNext=NULL; pLep=pLe; } return(pLen); } int main() { PLIST_E pL; pL=cl(8); foreach(pL,work); return 0; } |