您好,登錄后才能下訂單哦!
如何分析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怎么插入數據,插入數據有三種方式,頭部插入,尾部插入,中間插入。
先看一個頭部插入的例子:
頭部插入的邏輯是什么呢?
新插入的節點作為head節點,然后將原來的head節點指向當前head節點的next引用即可。
//插入到linkedList的頭部public void push(int newData) {//構建要插入的節點Node newNode = new Node(newData);//新節點的next指向現在的head節點newNode.next = head;//現有的head節點指向新的節點head = newNode; }
再看一下尾部插入的例子:
插入的邏輯是什么呢?
找到最后一個節點,然后將最后一個節點的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; }
再看一下怎么刪除某個位置的節點:
上面的例子中,我們要刪除第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; }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。