java - 将元素放入排序列表中

标签 java linked-list

各位,我的方法需要将一个新元素添加到已经排序的列表中,即在适当的位置。要点是该方法必须以对角线排序添加对象。例如,

     board.set(1,1,11);
        board.set(2,4,33);
        board.set(3,4,66);
        board.set(3,2,44);
        board.set(3,3,55);
        board.set(1,4,88);
        board.set(0,2,77);
        board.set(0,5,99);
        board.set(2,1,22);

结果应该是:

[(2,1,22), (3,2,44), (1,1,11), (3,3,55), (3,4,66), (0,2,77), (2,4,33), (1,4,88), (0,5,99)]

但是我的程序打印出这个:

[(3,4,66), (3,3,55), (3,2,44), (2,4,33), (2,1,22), (1,4,88), (1,1,11), (0,5,99), (0,2,77)]

即它不会将对象放置到正确的位置。

我有一个LinkedList<RowColElem<T>>leftDiagSeq “移动中”添加对象并将其放置到适当的位置。我的代码缺少什么?

注意:我不允许使用比较器、可比较的接口(interface)!

代码

LinkedList<RowColElem<T>> rowColSeq;
 private void sortedLeftDiagSeq(int row, int col, T x){
      RowColElem<T> object = new RowColElem<T>(row, col, x);
      ListIterator<RowColElem<T>> iter = leftDiagSeq.listIterator();
      RowColElem<T> inListObject;
      boolean added = false;

      while(iter.hasNext()){
           inListObject = iter.next();
           if(object.getRow()-1 < inListObject.getRow() ||
              object.getRow()-1 == inListObject.getRow() &&
              object.getCol()-1 < inListObject.getCol()){
               if( iter.hasPrevious() ){
                   iter.add(object);
               }
           }
      }


  }

最佳答案

主要标准是元素距主对角线的“距离”,负距离表示下三角矩阵。

if( object.getCol() - object.getRow() < inListObject.getCol() - inListObject.getRow()
    ||
    object.getCol() - object.getRow() == inListObject.getCol() - inListObject.getRow() &&
    object.getCol() < inListObject.getCol()){ ... }

我不确定上学期的情况。如果使用行号来打破与主对角线等距离的平局,那么您提供的数据也将产生预期的结果。也许这并不重要,因为您希望在一条对角线内从左上角到右下角进行排序。

关于java - 将元素放入排序列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062219/

相关文章:

Java 线程亲和性

java - GWT 验证的用户 session

java - 为什么java不允许父类的实例方法在子类中受到更多限制

c - 如何证明释放链表的函数写得不好?

Java 程序读取文本文件并将其与用户输入进行比较

java - Google Play 游戏服务 C++ SDK 找不到 NativeSdkEntryPoints java 类

java - test.timeoutSecs 属性令人困惑并且没有给出一致的结果

c++ - 删除单向链表的所有节点

Java - 具体的链表序列化

c - 单链表 c - 可以在此函数中未初始化地使用 (-Wall -Werror)