簡體   English   中英

將LinkedList插入另一個LinkedList

[英]Inserting a LinkedList into another LinkedList

目前,我在LinkedList(不是Java的類)類中有一個方法,可以將單個節點添加到LinkedList中,如下所示:

  public void add(int index, T v) {
     if(isValidIntervalPosition(index)) {
        Node<T> n = new Node<T>(v);
        if(index == 0) {
           n.setNext(head);
           head = n;
        }
        else {
           Node<T> m = head;
           int count = 1;
           while(count < index) {
              m = m.getNext();
              count++;
           }

           n.setNext(m.getNext());
           m.setNext(n);
        } 

        sz++;
     }
  }

但是我想實現另一種方法,將節點從輸入LinkedList添加到當前LinkedList。

這是骨架:

 public void add(int position, LinkedList<T> list) {


 }

我已經玩了幾個小時,沒有結果。 如果我已經可以插入單個節點,該怎么辦?

嘗試:

public void add(int position, LinkedList<T> list) {
    int index = position;
    for(T elem : list) {
        add(index ++, elem) // call to your implementation + increment index
    }
}

我想你可以做

public void add(int position, final LinkedList<T> list) {
    for(int i = 0; i < list.size(); i++) {
        add(position++, list.get(i));
    }
}

您要做的是不要觸摸列表中的每個要添加的節點。 相反,要在節點uv之間插入list ,請使u.next指向list.headlist.tail.next (最后一個元素,我不知道您是否存儲list.tail還是必須遍歷所有節點要獲取它的list )指向v (舊的u.next

如果不知道列表類的詳細信息(即存在哪些成員和方法),就很難編寫代碼示例。

特別是,由於實現自己的LinkedList對您的程序很少有用,但通常是對數據結構的練習,因此這是“添加整個列表”練習中最重要的事情。

這里首先獲取現有列表的大小,然后添加到當前位置

 public static void add(int position, LinkedList<String> list) {
      System.err.println(list.size());
      list.add(list.size(), "aaa");
      System.out.println(list.get(1));

     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM