中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何分析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

临邑县| 南平市| 健康| 如东县| 漳平市| 盐山县| 屯门区| 岳阳县| 大同市| 南召县| 固安县| 鹰潭市| 镇雄县| 宜丰县| 阆中市| 临洮县| 长丰县| 新郑市| 广宁县| 双桥区| 桓仁| 轮台县| 陕西省| 玉田县| 海门市| 孙吴县| 齐齐哈尔市| 石楼县| 壶关县| 普兰县| 正阳县| 卢湾区| 安龙县| 稻城县| 辽宁省| 安宁市| 镇江市| 四川省| 定州市| 南昌市| 江孜县|