1 /***************************************************************************
2 * Copyright (C) 2007 by Prabakaran Thirumalai *
3 * praba_tuty@yahoo.com *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 ***************************************************************************/
35 ListIterator(ListNode
*head
) { iter
= head
; start
= head
; }
39 if (iter
== NULL
) return false; else return true;
46 //isRemove ->the node needs to deleted after returning
47 void* nextElement(bool isRemove
= false)
49 if (iter
== NULL
) return NULL
;
50 ListNode
*node
= iter
;
59 char name
[IDENTIFIER_LENGTH
];
66 List() { head
= NULL
;}
68 DbRetVal
append(void *elem
)
70 ListNode
*newNode
= new ListNode();
71 newNode
->element
= elem
;
73 //If this is the first node, set it as head
74 if (NULL
== head
) { head
= newNode
; return OK
; }
76 ListNode
*iter
= head
;
77 while (NULL
!= iter
->next
) iter
= iter
->next
;
81 //Warning:Try to avoid using this method while using the iterator.The behavior
82 //is undefined. Instead set flag isRemove to yes and call nextElement of iterator.
83 DbRetVal
remove(void *elem
)
87 printError(ErrNotExists
, "There are no elements in the list. Empty list");
90 ListNode
*iter
= head
, *prev
= head
;
91 while (iter
->next
!= NULL
)
93 if (elem
== iter
->element
)
95 prev
->next
= iter
->next
;
101 if( iter
== head
) // there is only one node in the list
103 if (elem
== iter
->element
)
111 if( prev
== head
) // there are only two node in the list
113 if (elem
== iter
->element
)
120 printError(ErrNotFound
, "There are no elements in the list");
124 ListIterator
getIterator()
126 ListIterator
iter(head
);
131 if (NULL
== head
) return;
132 ListNode
*iter
= head
, *prevIter
= head
;
133 while (iter
->next
!= NULL
)
147 if (NULL
== head
) return 0;
148 ListNode
*iter
= head
;
149 while (iter
->next
!= NULL
)