ホームページ  >  記事  >  Java  >  Javaコードを使用して双方向リンクリストを実装する方法

Javaコードを使用して双方向リンクリストを実装する方法

王林
王林転載
2023-05-02 23:49:051527ブラウズ

1. 二重リンク リストの概要

1. 単一リンク リストの欠点

単一リンク リストは、リンク リスト内のデータ要素にのみアクセスできます。逆の順序が必要な場合、単一リンクされたリスト内のデータ要素にアクセスすることは非常に非効率的になります。

2. 二重リンク リストの構造

二重リンク リストは、ノードで構成されるリンク リストの一種であり、各データ ノードには 2 つのポインタがあり、直接の後継者と直接の先行者に。

Javaコードを使用して双方向リンクリストを実装する方法

3. 二重連結リストクラスの基本構造

class HeroNode2 {
        //编号
        public int no;
        //名称
        public String name;
        //昵称
        public String nickName;
        //下个节点编码
        public HeroNode2 next;
        //上一个节点
        public HeroNode2 pre;
 
        public HeroNode2(int no, String name, String nickName) {
            this.no = no;
            this.name = name;
            this.nickName = nickName;
        }
 
        public HeroNode2(int no, String name) {
            this.no = no;
            this.name = name;
        }
 
        @Override
        public String toString() {
            return "HeroNode{" +
                    "no=" + no +
                    ", name='" + name + '\'' +
                    ", nickName='" + nickName + '\'' +
                    '}';
        }
    }

2. 二重連結リストの動作

1. 二重リンクリストの挿入操作

Javaコードを使用して双方向リンクリストを実装する方法##

//添加节点到单向链表
        //1. 找到当前链表的最后节点
        //2. 将最后这个节点的next指定新节点
        public void add(HeroNode2 heroNode) {
            //因为head节点不能动,所以需要一个辅助变量temp
            HeroNode2 temp = head;
            while (true) {
                //根据是否有下个节点判断 是否到了链表动最后
                if (temp.next == null) {
                    break;
                }
                //如果没有找到最后 temp后移
                temp = temp.next;
            }
            //当退出循环时,temp就指向了链表的最后位置
            //当最后这个节点的next 指向新的节点
            //新节点的上一个节点指向temp
            temp.next = heroNode;
            heroNode.pre = temp;
        }

2. 二重リンクリストの削除操作

##うわー

以上がJavaコードを使用して双方向リンクリストを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。