Object* SLinkedList::remove(unsigned int pos){ if(isEmpty()){ return NULL; } if(pos < 0 || pos > ssize){ return NULL; } SLNode* neo = head; Object* retVal = NULL; if(pos == 0){ head = head->getNext(); }else{ for(int i = 0; i < pos-1; i++){ neo = neo->getNext(); } SLNode* tmpn = neo; neo = neo->getNext(); tmpn->setNext(neo->getNext()); } retVal = neo->getData(); neo->setData(NULL); neo->setNext(NULL); delete neo; ssize--; return retVal; }
void SLinkedList::print()const{ if(!(isEmpty())){ SLNode* tmpn = head; for(int i = 0; i < ssize; i++){ tmpn->getData()->print(); tmpn = tmpn->getNext(); } } }
Object* SLinkedList::last()const{ if(isEmpty()){ return NULL; } SLNode* tmpn = head; for(int i = 0; i < ssize-1; i++){ tmpn = tmpn->getNext(); } return tmpn->getData(); }
Object* SLinkedList::get(unsigned int pos)const{ if(isEmpty()){ return NULL; } if(pos < 0 && pos >= ssize){ return NULL; } SLNode* tmpn = head; for(int i = 0; i < pos; i++){ tmpn = tmpn->getNext(); } return tmpn->getData(); }
int SLinkedList::indexOf(Object* data)const{ if(isEmpty()){ return -1; } SLNode* tmpn = head; for(int i = 0; i < ssize; i++){ if(tmpn->getData()->equals(data)){ return i; } tmpn = tmpn->getNext(); } return -1; }
Object* SLQueue::dequeue() { if (isEmpty()) return NULL; SLNode* rem = head; head = head->getNext(); Object* retval = rem->getData(); rem->setData(NULL); rem->setNext(NULL); delete rem; size--; return retval; }