我在这里尝试实施" 单链接列表"的基本操作。 但只有在这里,我才面临一个问题,那就是在添加元素之后,即
al.add("Ravi");
al.add("Vijay");
al.add("Sanjay");
al.add("Ajay");
我得到的输出为:
[] --------->对于空的链接列表
[ Ravi,Ravi ,Vijay,Sanjay,Ajay] ------>添加元素后。
class MyLinkedList {
private Node first;
private Node last;
private int count;
public void add(Object ele){
if(first==null){
first=new Node(ele);
last=first;
count++;
}
last.next=new Node(ele);
last=last.next;
count++;
}
public int size(){
return count;
}
public Object get(int index){
if(index>=size())throw new IndexOutOfBoundsException();
Node p=first;
for(int i=0;i<=index;i++){
p=p.next;
}
return p.ele;
}
public void remove(int index){
if(index>=size())throw new IndexOutOfBoundsException();
if(index==0){
first=first.next;
count--;
return;
}
}
@Override
public String toString() {
if(size()==0)return "[]";
Node p=first;
String s="[" + p.ele;
while(p.next!=null){
p=p.next;
s+=","+p.ele;
}
return s + "]";
}
private class Node{
Object ele;
Node next;
Node(Object ele){
this.ele=ele;
}
}
public static void main(String[] args) {
MyLinkedList al=new MyLinkedList();
System.out.println(al);
al.add("Ravi");
al.add("Vijay");
al.add("Sanjay");
al.add("Ajay");
System.out.println(al);
}
}
答案 0 :(得分:3)
因为你添加了两次:
public void **add**(Object ele){
if(first==null){
first=new Node(ele); //First
last=first;
count++;
}
last.next=new Node(ele); //second.
last=last.next;
count++;
}
添加一个else语句:
public void **add**(Object ele){
if(first==null){
first=new Node(ele);
last=first;
count++;
} else {
last.next=new Node(ele);
last=last.next;
count++;
}
}
答案 1 :(得分:2)
在你的方法中:
public void **add**(Object ele){
if(first==null){
first=new Node(ele);
last=first;
count++;
}
last.next=new Node(ele);
last=last.next;
count++;
}
您必须在if子句的末尾添加return
语句,或使用else
。否则你要添加第一个元素两次。