某大型杀毒软件公司2014年4月份笔试试题解答,第二小题,实现Linkist,具体要求见程序,只实现了几个基本的功能,请大家指出不足之处。转载请注明出处。
/* 程序来源:实习生招聘
* 源文件名称:LinkList.java
* 要 点:
* 写一个java程序实现LinkList类。
* 最基本必须实现add、remove、get、size方法。
*/
public class LinkList{
public static void main(String[] args){
LinkList ll = new LinkList();
ll.add(new String("123"));
ll.add(new String("321"));
ll.add(new Integer(88));
System.out.println("size: "+ll.size());
int i = 1;
while(i<=ll.size())
System.out.println( ll.get(i++));
ll.remove(1);
System.out.println( ll.get(1));
System.out.println("size: "+ll.size());
}
class Node{
Object o = null;
Node child = null;
Node father = null;
public Node(Object o){
this.o = o;
}
}
Node head = new Node(new Object());
Node end = head;
int size = 0;
public void add(Object o){
Node node = new Node(o);
node.father = end;
end.child = node;
end = node;
size++;
}
public Object get(int num){
Node node = null;
Object o = null;
if(size == 0)
System.out.println("size is 0");
else if(num>size)
System.out.println("num > size");
else if(num<=0)
System.out.println("num must > 0 ");
else{
node = head.child;
for(int i = 1;i<num;i++)
node = node.child;
o = node.o;
}
return o;
}
public Object remove(int num){
Node node = null;
Object o = null;
if(size == 0)
System.out.println("size is 0");
else if(num>size)
System.out.println("num > size");
else if(num<=0)
System.out.println("num must > 0 ");
else if(num != size){
node = head.child;
for(int i = 1;i<num;i++)
node = node.child;
node.father.child = node.child;
node.child.father = node.father;
size--;
o = node.o;
}else{
node = end;
end.father.child = null;
end = node.father;
size--;
o = node.o;
}
return o;
}
public int size(){
return size;
}
}