📄 dsaset.java
字号:
public class DSASet implements DSA
{
private int numElts; // Number of items in the list
private Node header, trailer;
public DSASet()
{
numElts = 0;
header = new Node(null, null, null); // create header
trailer = new Node(header, null, null); // create trailer
header.setNext(trailer); // make header and trailer point to each other
}
public boolean add(int element)
{
numElts++;
Node newNode = new Node(trailer.getPrev(), trailer, new Integer(element));
trailer.getPrev().setNext(newNode);
trailer.setPrev(newNode);
return true;
}
public boolean remove (int element)
{
Node theNode = header;
for (int i = 1 ; i <= numElts; i++)
{
theNode = theNode.getNext();
if (((Integer)theNode.element()).intValue() == element)
{
numElts--;
Node vPrev = theNode.getPrev();
Node vNext = theNode.getNext();
vPrev.setNext(vNext);
vNext.setPrev(vPrev);
return true;
}
}
return false;
}
public boolean contains(int element)
{
Node theNode = header;
for (int i = 1 ; i <= numElts; i++)
{
theNode = theNode.getNext();
if (((Integer)theNode.element()).intValue() == element)
{
return true;
}
}
return false;
}
public void clear()
{
numElts = 0;
header = new Node(null, null, null); // create header
trailer = new Node(header, null, null); // create trailer
header.setNext(trailer); // make header and trailer point to each other
}
public boolean isEmpty()
{
return (numElts < 1);
}
public int size()
{
return numElts;
}
public String toString()
{
String s ="";
Node theNode = header;
for (int i = 1 ; i <= numElts; i++)
{
theNode = theNode.getNext();
s+= ("Element "+i+": ");
s+= (((Integer)(theNode.element())).intValue()+"\n");
}
return s;
}
public static void main(String[] args)
{
DSASet a = new DSASet();
long startTime = System.currentTimeMillis();
for (int i = 0 ; i < 50000; i++)
{
int b =(int)(Math.random()*50000);
a.add(b);
}
long addTime = System.currentTimeMillis();
System.out.println("add 50000 time: "+ (addTime-startTime));
for (int i = 0 ; i < 50000; i++)
{
int b =(int)(Math.random()*50000);
a.remove(b);
}
long removeTime = System.currentTimeMillis();
System.out.println("remove 50000 time: "+ (removeTime-addTime));
for (int i = 0 ; i < 50000; i++)
{
int b =(int)(Math.random()*50000);
a.contains(b);
}
long checkTime = System.currentTimeMillis();
System.out.println("check 50000 time: "+ (checkTime-removeTime));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -