214 #include "allheaders.h" 238 DLLIST *elem, *next, *head;
240 PROCNAME(
"listDestroy");
243 L_WARNING(
"ptr address is null!\n", procName);
247 if ((head = *phead) == NULL)
250 for (elem = head; elem; elem = next) {
252 L_WARNING(
"list data ptr is not null\n", procName);
282 PROCNAME(
"listAddToHead");
285 return ERROR_INT(
"&head not defined", procName, 1);
288 return ERROR_INT(
"data not defined", procName, 1);
290 if ((cell = (
DLLIST *)LEPT_CALLOC(1,
sizeof(
DLLIST))) == NULL)
291 return ERROR_INT(
"cell not made", procName, 1);
335 DLLIST *cell, *head, *tail;
337 PROCNAME(
"listAddToTail");
340 return ERROR_INT(
"&head not defined", procName, 1);
343 return ERROR_INT(
"&tail not defined", procName, 1);
345 return ERROR_INT(
"data not defined", procName, 1);
347 if ((cell = (
DLLIST *)LEPT_CALLOC(1,
sizeof(
DLLIST))) == NULL)
348 return ERROR_INT(
"cell not made", procName, 1);
358 if ((tail = *ptail) == NULL)
399 PROCNAME(
"listInsertBefore");
402 return ERROR_INT(
"&head not defined", procName, 1);
405 return ERROR_INT(
"data not defined", procName, 1);
406 if ((!head && elem) || (head && !elem))
407 return ERROR_INT(
"head and elem not consistent", procName, 1);
410 if ((cell = (
DLLIST *)LEPT_CALLOC(1,
sizeof(
DLLIST))) == NULL)
411 return ERROR_INT(
"cell not made", procName, 1);
418 }
else if (head == elem) {
424 cell->prev = elem->prev;
426 elem->prev->next = cell;
462 PROCNAME(
"listInsertAfter");
465 return ERROR_INT(
"&head not defined", procName, 1);
468 return ERROR_INT(
"data not defined", procName, 1);
469 if ((!head && elem) || (head && !elem))
470 return ERROR_INT(
"head and elem not consistent", procName, 1);
473 if ((cell = (
DLLIST *)LEPT_CALLOC(1,
sizeof(
DLLIST))) == NULL)
474 return ERROR_INT(
"cell not made", procName, 1);
481 }
else if (elem->next == NULL) {
487 cell->next = elem->next;
488 elem->next->prev = cell;
517 PROCNAME(
"listRemoveElement");
520 return (
void *)ERROR_PTR(
"&head not defined", procName, NULL);
523 return (
void *)ERROR_PTR(
"head not defined", procName, NULL);
525 return (
void *)ERROR_PTR(
"elem not defined", procName, NULL);
529 if (head->next == NULL) {
531 return (
void *)ERROR_PTR(
"elem must be head", procName, NULL);
533 }
else if (head == elem) {
534 elem->next->prev = NULL;
536 }
else if (elem->next == NULL) {
537 elem->prev->next = NULL;
539 elem->next->prev = elem->prev;
540 elem->prev->next = elem->next;
568 PROCNAME(
"listRemoveFromHead");
571 return (
void *)ERROR_PTR(
"&head not defined", procName, NULL);
572 if ((head = *phead) == NULL)
573 return (
void *)ERROR_PTR(
"head not defined", procName, NULL);
575 if (head->next == NULL) {
578 head->next->prev = NULL;
617 PROCNAME(
"listRemoveFromTail");
620 return (
void *)ERROR_PTR(
"&head not defined", procName, NULL);
621 if ((head = *phead) == NULL)
622 return (
void *)ERROR_PTR(
"head not defined", procName, NULL);
624 return (
void *)ERROR_PTR(
"&tail not defined", procName, NULL);
625 if ((tail = *ptail) == NULL)
628 if (head->next == NULL) {
632 tail->prev->next = NULL;
670 PROCNAME(
"listFindElement");
673 return (
DLLIST *)ERROR_PTR(
"head not defined", procName, NULL);
675 return (
DLLIST *)ERROR_PTR(
"data not defined", procName, NULL);
677 for (cell = head; cell; cell = cell->next) {
678 if (cell->data == data)
697 PROCNAME(
"listFindTail");
700 return (
DLLIST *)ERROR_PTR(
"head not defined", procName, NULL);
702 for (cell = head; cell; cell = cell->next) {
703 if (cell->next == NULL)
707 return (
DLLIST *)ERROR_PTR(
"tail not found !!", procName, NULL);
723 PROCNAME(
"listGetCount");
726 return ERROR_INT(
"head not defined", procName, 0);
729 for (elem = head; elem; elem = elem->next)
753 PROCNAME(
"listReverse");
756 return ERROR_INT(
"&head not defined", procName, 1);
757 if ((head = *phead) == NULL)
758 return ERROR_INT(
"head not defined", procName, 1);
789 DLLIST *head1, *head2, *tail1;
791 PROCNAME(
"listJoin");
794 return ERROR_INT(
"&head1 not defined", procName, 1);
796 return ERROR_INT(
"&head2 not defined", procName, 1);
799 if ((head2 = *phead2) == NULL)
803 if ((head1 = *phead1) == NULL) {
l_int32 listInsertAfter(DLLIST **phead, DLLIST *elem, void *data)
listInsertAfter()
void listDestroy(DLLIST **phead)
listDestroy()
l_int32 listAddToHead(DLLIST **phead, void *data)
listAddToHead()
void * listRemoveFromHead(DLLIST **phead)
listRemoveFromHead()
DLLIST * listFindTail(DLLIST *head)
listFindTail()
l_int32 listJoin(DLLIST **phead1, DLLIST **phead2)
listJoin()
l_int32 listGetCount(DLLIST *head)
listGetCount()
void * listRemoveFromTail(DLLIST **phead, DLLIST **ptail)
listRemoveFromTail()
void * listRemoveElement(DLLIST **phead, DLLIST *elem)
listRemoveElement()
l_int32 listReverse(DLLIST **phead)
listReverse()
l_int32 listInsertBefore(DLLIST **phead, DLLIST *elem, void *data)
listInsertBefore()
DLLIST * listFindElement(DLLIST *head, void *data)
listFindElement()
l_int32 listAddToTail(DLLIST **phead, DLLIST **ptail, void *data)
listAddToTail()