为什么我的单个链接列表实现在添加对象后两次给我我的第一个元素



在这里,我正在尝试实现" 单个链接列表"的基本操作。但是,只有在这里我只面临一个问题,即添加元素后,即

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++;
    }

相关内容

  • 没有找到相关文章

最新更新