2012-10-19 73 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