链接列表排序

时间:2016-06-11 07:24:12

标签: java sorting

我看到了您对https://stackoverflow.com/questions/37538652/adding-an-element-to-a-sorted-list-and-keeping-it-sorted-in-ascending-order-jav此主题的回复。

如何找到插入元素的位置?

我是一名学生第一次尝试使用链接列表但是我可以在开始或结束时理解但是当你已经有序列时如何找到正确的位置?

public void insertFirstPosition(int newElement)
    {  
        ListOfNVersion03 temp = new ListOfNVersion03(thisNumber);
        temp.next = next;
        next = temp;
        thisNumber = newElement;

    }

非常感谢。

3 个答案:

答案 0 :(得分:0)

我希望你的名单已经排序......

然后从一个链接迭代到下一个链接。在迭代时存储前一个节点。当您发现第一个节点比您要插入的节点更差时。更改插入节点旁边的上一个节点,插入节点引用当前节点。

// Pseudocode
Node previousNode = root;
while (previousNode.next != null) {
    Node current = previousNode.next;
    // Check current node
    if (current.value < insert.value) {
        previousNode.next = insert;
        insert.next = current;
        break;
    }
}

不要忘记最后处理案例插页

答案 1 :(得分:0)

由于它是一个链表,您必须逐个浏览节点并比较插入的数字以找到位置。

public Link findLink(int n){
 Link lk= firstLink;
 while (lk!=null){
    if (lk.number<n)
    return lk;
    lk=lk.next;
    }
 return null;
}

答案 2 :(得分:0)

LinkedList类扩展了AbstractSequentialList并实现了List接口。它提供了一个链表数据结构。

除了从其父类继承的方法之外,LinkedList还定义了以下方法:

  

void add(int index,Object element)在指定的元素处插入   此列表中的指定位置索引。抛出   IndexOutOfBoundsException - 如果指定的索引超出范围   (index&lt; 0 || index&gt; size())。

     

void addFirst(Object o)在开头插入给定元素   这个清单。

     

void addLast(Object o)将给定元素追加到此末尾   列表

     

Object get(int index)返回指定位置的元素   这个清单。如果指定的索引是,则抛出IndexOutOfBoundsException   超出范围(索引&lt; 0 || index&gt; = size())。

我将向您展示示例代码。这可以帮助您,

import java.util.*;
public class LinkedListDemo{ public static void main(String args[])
{// create a linked list
LinkedList ll =new LinkedList();// add elements to the linked list
      ll.add("F");
      ll.add("B");
      ll.add("D");
      ll.add("E");
      ll.add("C");
      ll.addLast("Z");
      ll.addFirst("A");
      ll.add(1,"A2");
System.out.println("Original contents of ll: "+ ll);// remove elements from the linked list
      ll.remove("F");
      ll.remove(2);
System.out.println("Contents of ll after deletion: "+ ll);// remove first and last elements
      ll.removeFirst();
      ll.removeLast();
System.out.println("ll after deleting first and last: "+ ll);// get and set a valueObject val = ll.get(2);
      ll.set(2,(String) val +" Changed");
System.out.println("ll after change: "+ ll);
}
}

如果您对链接列表有疑问,请在java上搜索有关数据结构的信息。谢谢 ..给我回电话。!