2012-01-12 68 views
0

我一直试图让冒泡排序双链表,和我读在互联网上得到它与单链表的工作会更容易些,所以我尝试这是我的代码让我的冒泡排序与双链表工作

public void bubbleSort() 
    { 
     StudentNode n; 
     boolean isSorted=false; 

     for(int i=lenght-1; i>1 && isSorted==false; i--) 
     {    
      for(int j=0; j<i; j++) 
      { 
       n=L.head; 
       isSorted=true; 
       for(int k=0; k n.next.data) 
       { 
        isSorted=false; 
        swap(n, n.next); 
       } 
      } 
     } 
    } 

    public void swap(StudentNode N1, StudentNode N2) 
    { 
     int temp=N1.data; 
     N1.data=N2.data; 
     N2.data=temp; 

    } 

我将如何将其更改为双链表使用?

+1

这是功课?因为我会建议使用[Collections.sort(http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#sort%28java.util.List,%20java.util。比较%29) – Ishtar 2012-01-12 10:50:48

+0

啊这是,如何将我去一个双链表实现Collections.sort,因为我还没有做出像// DoubleLinkedList 名单列表=新DoubleLinkedList (); – 2012-01-12 10:55:52

回答

0

但从你的实现来看,它真的不要紧,无论它至少双向链表与否,对于排序(冒泡)一部分,你只是改变了内容,而不是指针。

+0

你是对的,如果我有两个列表,我将如何将“.data”更改为不同类型的数据? – 2012-01-12 11:07:20

+0

在这种情况下,你会改变指针而不是数据。这个代码比你所拥有的代码稍微复杂一些,但你可以修改你的交换函数来实现这一点。 – 2012-01-12 11:15:22

+0

好的,谢谢你的帮助! – 2012-01-12 11:35:03

0

如果你只改变每个节点的内容(数据),也不要移动节点本身,我看不出有任何理由去改变什么。