2012-10-19 105 views
0

我試圖在鏈接列表中插入2個數字。該列表必須訂購,因此較小的數字必須在較大的數字之前插入。交換兩個鏈接列表條目

該列表首先添加較大的數字,然後當插入第二個較小的數字時,它必須以較小的數量交換較大的數字。

我創建這種方法只是爲了做到這一點,這個代碼中的問題是,它首先添加更大的數字,然後更小的數字,然後再次,更大的數字。

我在做什麼錯?

public void insertFirst(int id, double dd) 
{   
    if (isEmpty()) 
    { 
     Link newLink = new Link(id, dd); 
     newLink.next = first; 
     first = newLink; 
    } 
    else 
    { 
     if (first.iData < id) 
     { 
      Link newLink = new Link(id, dd); 
      newLink.next = first; 
      first = newLink; 
     } 
     else 
     { 
      int iTempData = first.iData; 
      double dTempData = first.dData; 

      Link newLink = new Link(id, dd); 
      newLink.next = first; 
      first = newLink; 

      Link newLink2 = new Link(iTempData, dTempData); 
      newLink2.next = first; 
      first = newLink2; 
     } 
    } 
} 
+0

更好地給代碼,其中'isEmpty()'和'第一'定義.. – manas

回答

1

速戰速決將

public void insertFirst(int id, double dd) 
{   
    if (isEmpty()) 
    { 
     Link newLink = new Link(id, dd); 
     newLink.next = first; 
     first = newLink; 
    } 
    else 
    { 
     if (first.iData < id) 
     { 
      Link newLink = new Link(id, dd); 
      newLink.next = first; 
      first = newLink; 
     } 
     else 
     { 
      int iTempData = first.iData; 
      double dTempData = first.dData; 

      first.iData = id; // replace first 
      first.dData = dd; // (do not add new) 

      Link newLink2 = new Link(iTempData, dTempData); 
      newLink2.next = first; 
      first = newLink2; 
     } 
    } 
} 

注意,這個功能實際上並沒有維護排序的列表 - 它可以作爲第一或第二,但如果添加新項通過的ID是否大於列表中已包含的所有項目(比如10個)?

+0

我明白你的觀點。我只是想知道如何做2個數字。接下來,我必須創建一個循環來遍歷所有條目。 – HelpNeeder