Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Java by andrey ( 13 years ago )
package lab8;
import java.io.Serializable;
import interfaces.task8.CyclicCollection;
import interfaces.task8.CyclicItem;
/**
*
* Implementation for CyclicCollection interface
*
* @author sukhovey
*
*/
public class CyclicCollectionImpl implements CyclicCollection, Serializable {
/**
*
*/
private static final long serialVersionUID = 2746019779793098054L;
private CyclicItem first;
private int size = 0;
@Override
public boolean add(CyclicItem item) {
if (item == null) {
throw new NullPointerException();
}
if (first == null) {
first = item;
first.setNextItem(item);
size++;
return true;
}
if (first == item) {
throw new IllegalArgumentException(
"The element is already in collection");
}
CyclicItem temp = first;
// iterate all elements in collection to check if one of them equals to
// item
while (temp.nextItem() != first) {
if (temp.nextItem() == item) {
throw new IllegalArgumentException(
"The element is already in collection");
}
temp = temp.nextItem();
}
temp.nextItem().setNextItem(item);
item.setNextItem(first);
size++;
return true;
}
@Override
public CyclicItem getFirst() {
return first;
}
@Override
public void insertAfter(CyclicItem item, CyclicItem newItem) {
if (item == null || newItem == null) {
throw new NullPointerException();
}
// check if newItem already is in collection and find item
if (size == 0) {
throw new IllegalArgumentException(
"Collection does not contain item");
}
if (size == 1) {
if (first == item) {
add(newItem);
} else
throw new IllegalArgumentException(
"Collection does not contain item");
}
boolean itemIsInCollection = false;
CyclicItem temp = first;
do {
if (temp == newItem) {
throw new IllegalArgumentException(
"The element is already in collection");
}
if (temp == item) {
itemIsInCollection = true;
}
temp = temp.nextItem();
} while (temp != first);
if (!itemIsInCollection) {
throw new IllegalArgumentException(
"Collection does not contain item");
}
newItem.setNextItem(item.nextItem());
item.setNextItem(newItem);
size++;
}
@Override
public boolean remove(CyclicItem item) {
if (item == null) {
throw new NullPointerException();
}
if (size == 0) {
return false;
}
if ((first == item) & (size == 1)) {
first = null;
size--;
return true;
}
// start element for item search
CyclicItem temp = first.nextItem();
// variable containing previous element to current element during item
// search
CyclicItem prev = first;
do {
if (temp == item) {
if (temp == first) {
first = temp.nextItem();
}
prev.setNextItem(temp.nextItem());
size--;
return true;
}
prev = temp;
temp = temp.nextItem();
} while (temp != first.nextItem());
return false;
}
@Override
public int size() {
return size;
}
}
Revise this Paste