-2

だから私は自分が作成したプログラムのためにLinkedListをコンパイルしようとしていますが、それは本当にエラーであると感じるエラーで戻ってきます(それ以降の場合)。誰かがこれを見て、コンパイル時にエラーが発生する可能性がある理由と、それらを取り除くために私が何をすべきかについての提案があるかどうかについて、彼らの考えを入れることができるかどうか疑問に思っています:

import java.util.Iterator;
import java.util.NoSuchElementException;

public class LinkedListDS<E> implements ListADT<E> {
    class Node<E> {
        E data;
        Node<E> next; 

        public Node(E data) {
            this.data = data;
            next = null;
            }
        }

    private Node<E> head, tail;
    private int currentSize;

    public LinkedListDS() {
        head = tail = null;
        currentSize = 0;
        }

    public void addFirst(E obj) {
        if(head == null)
            head = tail = newNode;
        else {
            newNode.next = head;
            head = newNode;
            }
        currentSize++;
        }   

// Adds the Object obj to the end of the list 
    public void addLast(E o) {
        if(head == null)
            head = newNode;
            tail = newNode;
        currentSize++;
        return;
        {
        tail.next = newNode;
        tail = newNode;
        currentSize++;
        }
    }   

// Removes the first Object in the list and returns it.
// Returns null if the list is empty.
    public E removeFirst() {
        if(head == null) 
            return null;
        E tmp = head.data;
        head = head.next;
        {
        if (head == null)
            tail = null;
            currentSize++;
        return tmp;
        }
    }   

//  Removes the last Object in the list and returns it.
//  Returns null if the list is empty.
    public E removeLast() {
        Node<E> previous = null;
        Node<E> current = head;
            if (current == null) 
                return null;
            while(current.next != null) {
                previous = current;
                current = current.next;
            }
            if(previous = null)
                return removeFirst;
                previous.next = null;
                tail = previous;
                currentSize--;
            return current.data;
        }

// Returns the first Object in the list, but does not remove it.
//  Returns null if the list is empty.
    public E peekFirst() {
        if(head == null)
            return null;
        return head.data;
        }

//  Returns the last Object in the list, but does not remove it.
//  Returns null if the list is empty.
    public E peekLast() {
        if(tail == null)
            return null;
        return tail.data;
        }

//  Removes the specific Object obj from the list, if it exists.
//  Returns true if the Object obj was found and removed, otherwise false
    public boolean remove(E obj) {
        if(head == null)
            return false;
            {
        if(head.data.equals(obj))
            head = head.next;
            return true;
            }
    Node<E> current = head;
    while(current.next != null)
    {
        if(current.next.data.equals(obj))
        {
            current.next = current.next.next;
            return true;
            }
        current - current.next;
        }
    currentSize--;
    return false,
    }
}    

//  The list is returned to an empty state.
    public void makeEmpty() {
        head = tail = null;
        currentSize = 0;


//  Returns true if the list contains the Object obj, otherwise false
    public boolean contains(E obj) {
        Node<E> current = head;
        while(current != null)
        {
            if(current.data.equals(obj))
            {
                return true;
                }
            current - current.next;
            }
        return false;
        }


//  Returns true if the list is empty, otherwise false
    public boolean isEmpty() {
        return = null;
        }

//  Returns true if the list is full, otherwise false
    public boolean isFull() {
        return false;
        }

//  Returns the number of Objects currently in the list.
    public int size() {
        return currentSize;
        }

    public iterator<E> iterator() {
        return new iterator;
            }

    class IteratorHelper implements Iterator<E> {
        Node<E> iteratorPointer

        public IteratorHelper() {
            iteratorPointer = head;
            }
        public boolean hasNext() {
            return iteratorPointer != null;
            }
        public E next() {
            if(!hasNext())
                throw new NoSuchElementException();
            E tmp = iteratorPointer.data;
            iteratorPointer = iteratorPointer.next;
            return tmp;
            }
        public void remove() {
            throw new UnsupportedOperationException();
            }
        }

}

また、このコードをより読みやすく、理解しやすくする方法はありますか?それほど長くはありませんが、同じタスクを完了する必要がありますか?お気軽に共有してください。

4

1 に答える 1

4

インターフェイスを定義し、それをクラスとして使用しています..

public interface LinkedListDS<E> implements ListADT<E> {

上記の宣言の問題: -

  • クラスが別のクラスを拡張するのと同じように、インターフェースは他のインターフェースを実装せず、拡張します。
  • インターフェイスが定義されておらずmethodsconstructors

だから、あなたは実際にクラスを使いたかった..

上記の宣言を次のように変更します。 -

public class LinkedListDS<E> implements ListADT<E> {

また、iteratorメソッドを閉じていません..

public iterator<E> iterator() {
        return new iterator;

閉じ中かっこを追加してください.実際には、非常に多くのものがあります...コードを再インデントして、一致する中かっこを確認します.これは、コードをインデントしていないときに直面する1つの大きな問題です..

于 2012-10-08T05:21:50.220 に答える