0

私は現在 Java のクラスを取っていますが、リンクを理解するには二重リンク リストを作成することをお勧めします。一重連結リストを作成しましたが、二重連結リストに変換できません。それで、私の最後の番号が前の番号に接続されていることを確認するための提案を誰かにもらえないかと思っていましたか? そして、前の番号と最後の番号がヌルに接続されている場合。これがコードの一部です。もっと詳しく知りたい場合は、お尋ねください。投稿します。

要素などを追加するためのコード。これは、末尾である末尾を最後の番号に接続しようとする私の試みです。

public void add(int element){

            Node n = new Node();
            n.setItem(element);
            n.setNext(head);
            head = n;
            >
            //The tail connected to the new number added.
            n.setItem(element);
            n.setBefore(tail);
            tail = n;

以下のコードは、新しく挿入されたブロックが接続されていることを確認するために必要な挿入関数ですが、両方に接続する方法を考えるのに苦労しています。

public void insert(int element, int position){

        int currentposition = 0;
        Node currentNode = head;

        //Traverse to the right position
        while(currentposition < position-1){

            currentposition++;
        } 
        Node n = new Node();
        n.setItem(element);
        n.setNext(currentNode.getNext());
        currentNode.setNext(n);

        //The previous number connecting to the new number
        currentNode = tail;

    }
4

2 に答える 2

1

前のノードを保持する各ノードに追加のノード フィールドを追加します。

挿入疑似コード:

insert(Node n, index i) {
    currentIndex = 0
    currentNode = head
    while (currentIndex < i) {
      currentNode = currentNode.next
      currentIndex++
    }
    n.prev = currentNode
    n.next = currentNode.next
    currentNode.next = n
}
于 2014-03-06T22:30:07.730 に答える