簡體   English   中英

訪問鏈表

[英]access a linkedlist

我的程序包含二叉搜索樹和一個單鏈表。 其中每個操作都對兩個數據結構完成。 我在以下方面遇到問題:1)鏈接兩個數據結構,以使兩個數據結構的當前指向同一個元素。 2)對節點進行排序 3)最后也是最困難的一個是在鏈表 log(n) 中獲得搜索的性能,就像在 bst 中一樣。 我不能有比這更多的復雜性。 我使用另一種數據結構的選項是 none 。 順便說一句,我使用 java 作為編程語言。

1) 鏈接兩個數據結構,使兩個數據結構的當前都指向同一個元素。

您可以創建共享元素的樹和鏈表。 我想這就是你的意思。

2)對節點進行排序

你不能對一棵樹進行排序。 樹的節點是自然排序的,如果您在不同的比較器上對它們重新排序,則樹不再有效。

3)最后也是最困難的一個是在鏈表 log(n) 中獲得搜索的性能,就像在 bst 中一樣。

您不能在O(logN)搜索無序列表。 這在數學上是不可能的。 您可以在O(logN)搜索有序數組(或數組列表),但這取決於能夠在O(1)對數組/列表進行索引......這對於鏈表是不可能的。


但是……您可以同時實現一個既是樹又是鏈表的混合數據結構。 您將從如下所示的節點類型開始:

  private class Node <T> {
     private Node<T> next;
     private Node<T> prev;
     private Node<T> left;
     private Node<T> right;
     private T value;
     ...
  }

然后使用leftright字段構建樹,並使用nextprev字段構建鏈表。

數據結構的列表方面可以使用一個Comparator進行排序,數據結構的樹方面可以使用第二個Comparator進行排序......允許基於第二個Comparator的排序進行O(logN)查找。

我不確定這是否符合您的要求(它們沒有明確說明)但它相當接近。

暫無
暫無

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

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