91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

java實現單鏈表增刪改查的實例代碼詳解

發布時間:2020-09-29 14:41:22 來源:腳本之家 閱讀:248 作者:曾聰聰 欄目:web開發
package 數據結構算法.鏈表;

/*
 *定義節點
 * 鏈表由節點構成
 */
public class Node<E> {
  private E e;  //數據data
  private Node<E> next; //指向下一個節點

  public Node() {

  }

  public Node(E e) {
    this.e = e;
  }

  public Node<E> getNext() {
    return next;
  }

  public void setNext(Node<E> next) {
    this.next = next;
  }

  public E getE() {
    return e;
  }

  public void setE(E e) {
    this.e = e;
  }
}
package 數據結構算法.鏈表;

/*
 * 定義實現類MyLinkedList
 * 實現鏈表的基本功能:增刪改查
 */
public class MyLinkedList<E> {
  //聲明頭節點尾節點
  private Node<E> head;
  private Node<E> last;
  //鏈表的大小
  private int size;
  private int modcount; //計算被修改的次數

  public MyLinkedList() {
    head = new Node<E>();//實例化頭結點
    last = head;
  }

  /*
   *返回單鏈表中存儲的元素總數
   */
  public int size() {
    return size;
  }

  /*
   *獲取指定索引位置的節點對象
   */
  public Node<E> get(int index) {
    if (index < 0 || index > size - 1)
      return null;
    Node<E> node = head.getNext();//將頭結點的下一個節點賦給Node
    for (int i = 0; i < index; i++) {
      node = node.getNext();//獲取node的下一個節點
    }
    return node;
  }

  /*
   *獲取指定索引位置的數據
   */
  public E getValue(int index) {
    if (index < 0 || index > size - 1)
      return null;
    Node<E> node = get(index);
    return node.getE();
  }

  /*
   *增加元素
   */
  public void add(E e) {
    Node<E> node = new Node<E>(e); //以e實例化一個節點
    last.setNext(node);//往尾節點后追加節點
    last = node;//該節點設為最后一個節點
    size++;
    modcount++;
  }

  /*
   *指定位置插入元素,返回插入的節點數據
   */
  public E add(int index, E e) {
    if (index < 0 || index > size - 1)
      return null;
    Node<E> node = new Node<E>(e); //實例化一個節點
    //找到插入的原節點
    Node<E> oldNode = get(index);
    if (index == 0) {//當索引為0時
      head.setNext(node);
    } else {
      //找到插入節點的上一個
      Node<E> bNode = get(index - 1);
      bNode.setNext(node);
    }
    node.setNext(oldNode);
    size++;
    modcount++;
    return oldNode.getE();
  }

  /*
   *刪除指定的節點e,并返回刪除節點的數據
   */
  public E delete(int index) {
    if (index < 0 || index > size - 1)
      return null;
    if (index == 0) {//當索引為1,令頭結點的下一個節點為頭結點
      Node<E> node = head.getNext();
      head.setNext(node.getNext());
    }
    //獲取要刪除節點的前一個節點
    Node<E> bNode = get(index - 1);
    //獲取要刪除的節點
    Node<E> Node = bNode.getNext();
    //獲取要刪除節點的下一個節點
    Node<E> nNode = Node.getNext();
    //刪除該節點
    bNode.setNext(nNode);
    //清除Node的下一個節點
    Node.setNext(null);
    size--;
    modcount++;
    return Node.getE();//返回節點中的數據域
  }

  /*
   *修改指定位置的數據域并返回修改后的數據
   */
  public E set(int index, E e) {
    if (index < 0 || index > size - 1)
      return null;
    //獲取指定位置的原節點
    Node<E> node = get(index);
    node.setE(e);
    modcount++;
    return node.getE();
  }
}
package 數據結構算法.鏈表;

/*
 *定義測試類
 */
public class MyLinkedListTest {
  public static void main(String[] args) {
    MyLinkedList<String> list = new MyLinkedList<>();

    //測試add
    list.add("one");
    list.add("two");
    list.add("three");
    list.add("four");
    list.add(0,"newone");
    list.add(1,"newtwo");
    for (int i = 0; i < list.size(); i++) {
      System.out.print(list.getValue(i)+" ");
    }

    //測試set
    System.out.println();
    list.set(0, "111");
    list.set(1, "222");
    System.out.println(list.getValue(0) + "  " + list.getValue(1));

    //測試delete
    System.out.println();
    list.delete(1);
    for (int i = 0; i < list.size(); i++) {
      System.out.print(list.getValue(i)+" ");
    }
  }
}

運行結果如下:

java實現單鏈表增刪改查的實例代碼詳解

 以上就是全部知識點內容,感謝大家對億速云的支持。

向AI問一下細節

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

AI

荔浦县| 永城市| 辰溪县| 准格尔旗| 沙坪坝区| 永丰县| 武强县| 双峰县| 新绛县| 茶陵县| 镇江市| 大厂| 蓝山县| 本溪| 庐江县| 健康| 明溪县| 邵东县| 察雅县| 漠河县| 临颍县| 隆子县| 金堂县| 博罗县| 曲阜市| 丹棱县| 高青县| 霍山县| 凤庆县| 县级市| 林州市| 如东县| 延安市| 高要市| 苏尼特左旗| 科技| 嘉峪关市| 威远县| 通辽市| 祁阳县| 康平县|