在这里,我正在尝试实现" 单个链接列表"的基本操作。但是,只有在这里我只面临一个问题,即添加元素后,即
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);
}
}
因为您将其添加两次:
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++;
}
添加其他语句:
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++;
}
}
在您的方法中:
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
。否则您将第一个元素添加两次。
在此方法中
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语句中返回如下所示,否则第一个值将插入两次,因为执行IF块后,控件将转移到下一个语句中。您还可以将剩余的代码放在 else block下,它也将起作用。
public void add(Object ele){
if(first==null){
first=new Node(ele);
last=first;
count++;
return;
}
last.next=new Node(ele);
last=last.next;
count++;
}