typedef struct _lqueue_{ LQNode *head, *tail; }; LQueue *lqCreate(){ LQueue *lq; lq = (LQueue*) malloc(sizeof(LQueue)); if(lq != NULL) { lq->head = lq->tail = NULL; return lq; } return NULL; } int lqEnqueue(LQueue *lq,void *data){ LQNode *newNode; if(lq != NULL){ newNode = (LQNode*) malloc(sizeof(LQNode)); if(newNode != NULL){ newNode->next = NULL; newNode->data = data; if(lq->tail == NULL) { lq->tail = lq->head = newNode; } else { lq->tail->next = newNode; lq->tail = newNode; } return TRUE; } } return FALSE; } void *lqDequeue(LQueue *lq) { void *aux; LQNode *delNode; if(lq != NULL) { if(lq->head != NULL) { aux = lq->head->data; delNode = lq->head; lq->head = lq->head->next; if(lq->head == NULL) { lq->tail = NULL; } free delNode; return aux; } } return NULL; } /*************************************************************************/ SLLIST typedef struct _sllnode_ { void *data; struct _sllnode_ *next; } SLNode; typedef struct _sllist_ { SLNode *first; }SLList; sllCreate; sllDestroy; sllInsertFirst; sllRemoveFirst; sllInputLast; void *sllRemoveSpec(SLList *l, void *test, int (*cmp)(void *, void *)) { SLNode *spec; SLNode *prev; void *data; if(l != NULL) { if(l->first != NULL) { spec = l->first; prev = NULL; while(cmp(spec->data, test) != TRUE, && spec->next != NULL) { prev = spec; spec = spec->next; } if(cmp(spec->data,test) == TRUE) { data = spec->data; if(prev != NULL) { prev->next = sepc->next; } else { l->first = spec->next; } free(spec); return data } } } return NULL; }