亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析linkedList

發布時間:2021-12-23 18:54:22 來源:億速云 閱讀:183 作者:柒染 欄目:云計算

如何分析linkedList,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

簡介

linkedList應該是一種非常非常簡單的數據結構了。節點一個一個的連接起來,就成了linkedList。今天我們使用動畫的方法一起來看看linkedList是怎么插入和刪除的。

linkedList的構建

linkedList是由一個一個的節點構成的。而每個節點只需要存儲要保存的數據和下一個節點的引用即可。

如何分析linkedList

linkedList本身需要一個head節點,所以我們的linkedList可以這樣構建:

public class LinkedList {

    Node head; // head 節點//Node表示的是Linked list中的節點,包含一個data數據和下一個節點的引用class Node {int data;
        Node next;//Node的構造函數Node(int d) {
            data = d;
        }
    }
}

linkedList的操作

先看一下linkedList怎么插入數據,插入數據有三種方式,頭部插入,尾部插入,中間插入。

頭部插入

先看一個頭部插入的例子:

頭部插入的邏輯是什么呢?

新插入的節點作為head節點,然后將原來的head節點指向當前head節點的next引用即可。

    //插入到linkedList的頭部public void push(int newData) {//構建要插入的節點Node newNode = new Node(newData);//新節點的next指向現在的head節點newNode.next = head;//現有的head節點指向新的節點head = newNode;
    }

尾部插入

再看一下尾部插入的例子:

如何分析linkedList

插入的邏輯是什么呢?

找到最后一個節點,然后將最后一個節點的next指向新插入的節點。

//新節點插入到list最后面public void append(int newData) {//創建新節點Node newNode = new Node(newData);//如果list是空,則新節點作為head節點if (head == null) {
            head = newNode;return;
        }

        newNode.next = null;//找到最后一個節點Node last = head;while (last.next != null) {
            last = last.next;
        }//插入last.next = newNode;return;
    }

中間插入

再看一下中間插入的例子:

這個例子中,我們在第三個節點的位置插入了一個93。

插入邏輯就是先找到第二個節點,將第二個節點的next指向新節點,然后將新節點的next指向原先的第三個節點。

看下java代碼如何實現:

//插入在第幾個元素之后public void insertAfter(int index, int newData) {
        Node prevNode = head;for (int i = 1; i < index; i++) {if (prevNode == null) {
                System.out.println("輸入的index有誤,請重新輸入");return;
            }
            prevNode = prevNode.next;
        }//創建新的節點Node newNode = new Node(newData);//新節點的next指向prevNode的下一個節點newNode.next = prevNode.next;//將新節點插入在prevNode之后prevNode.next = newNode;
    }

刪除節點

再看一下怎么刪除某個位置的節點:

如何分析linkedList

上面的例子中,我們要刪除第5個節點。

刪除的邏輯就是找到第4個節點和第6個節點。然后將第四個節點的next指向第6個節點即可。

看下相應的java代碼如下:

    //刪除特定位置的節點void deleteNode(int index){// 如果是空的,直接返回if (head == null)return;// head節點Node temp = head;// 如果是刪除head節點if (index == 1)
        {
            head = temp.next;return;
        }// 找到要刪除節點的前一個節點for (int i=1; temp!=null && i<index-1; i++)
            temp = temp.next;// 如果超出范圍if (temp == null || temp.next == null)return;// temp->next 是要刪除的節點,刪除節點Node next = temp.next.next;
        temp.next = next;
    }

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

即墨市| 吴堡县| 铁岭县| 绥德县| 余干县| 漯河市| 璧山县| 微山县| 永寿县| 花垣县| 黄浦区| 喀喇| 柳州市| 灵台县| 内黄县| 宜都市| 汝州市| 遂宁市| 库车县| 昌都县| 江川县| 司法| 平湖市| 浙江省| 巨野县| 阜康市| 鸡西市| 商河县| 龙游县| 武冈市| 凤山县| 洛宁县| 岚皋县| 金昌市| 南召县| 乌拉特中旗| 秦安县| 泗洪县| 海口市| 龙胜| 平泉县|