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;
}
Пример #6
0
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;
}