Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <class H> class CircularList{
- Nodo<H> *head, *current;
- int n;
- Nodo<H>* _search(H x){
- Nodo<H>* tmp = head->getNext();
- while(tmp != head && *tmp->getKey() != x)
- tmp = tmp->getNext();
- return tmp;
- }
- public:
- CircularList(){
- head = new Nodo<H>();
- head->setNext(head);
- head->setPrev(head);
- n = 0;
- }
- void insert(H x){
- Nodo<H>* nd = new Nodo<H>(new H(x));
- if(isEmpty()){
- nd->setNext(head);
- nd->setPrev(head);
- head->setNext(nd);
- head->setPrev(nd);
- }else{
- nd->setNext(head->getNext());
- nd->setPrev(head);
- head->getNext()->setPrev(nd);
- head->setNext(nd);
- }
- n++;
- }
- void del(H x){
- Nodo<H>* tmp = _search(x);
- if(tmp != head){
- tmp->getNext()->setPrev(tmp->getPrev());
- tmp->getPrev()->setNext(tmp->getNext());
- delete tmp;
- n--;
- }
- }
- H* begin(){
- current = head;
- if(head->getNext()) return next();
- return NULL;
- }
- H* next(){
- if(current->getNext() == head) return NULL;
- current = current->getNext();
- return current->getKey();
- }
- int isEmpty(){ return n == 0; }
- int getSize(){ return n; }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement