📄 linkedbag.java
字号:
/**
*
*/
package jss.bag;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Random;
/**
* @author Sean.N.Zhang
*
*/
public class LinkedBag implements BagADT {
public void add(Object element) {
LinearNode node = new LinearNode(element);
node.setNext(contents);
contents = node;
count++;
}
public void addAll(BagADT bag) {
// TODO Auto-generated method stub
}
public boolean contains(Object target) {
// TODO Auto-generated method stub
return false;
}
public boolean equals(BagADT bag) {
// TODO Auto-generated method stub
return false;
}
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
public Iterator iterator() {
return new LinkedIterator(contents,count);
}
public Object remove(Object target) {
boolean found = false;
LinearNode previous, current;
Object result = null;
if (contents.getElement().equals(target)) {
result = contents.getElement();
contents = contents.getNext();
} else {
previous = contents;
current = contents.getNext();
for (int look = 1; look < count && !found; look++)
if (current.getElement().equals(target))
found = true;
else {
previous = current;
current = current.getNext();
}
if (!found)
throw new NoSuchElementException();
result = current.getElement();
previous.setNext(current.getNext());
}
count--;
return result;
}
public Object removeRandom() {
LinearNode previous, current;
Object result = null;
int pick = rand.nextInt(count) + 1;
if (pick == 1) {
result = contents.getElement();
contents = contents.getNext();
} else {
previous = contents;
for (int skip = 2; skip < pick; skip++)
previous = previous.getNext();
current = previous.getNext();
result = current.getElement();
previous.setNext(current.getNext());
}
count--;
return result;
}
public int size() {
// TODO Auto-generated method stub
return 0;
}
public BagADT union(BagADT set) {
// TODO Auto-generated method stub
return null;
}
private static Random rand = new Random();
private int count;
private LinearNode contents;
public static Random getRand() {
return rand;
}
public static void setRand(Random rand) {
LinkedBag.rand = rand;
}
public LinearNode getContents() {
return contents;
}
public void setContents(LinearNode contents) {
this.contents = contents;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -