簡體   English   中英

使用Book對象的鏈接列表進行插入排序

[英]insertion sort using linked list for Book objects

我正在嘗試使用插入排序按書名的字母順序對書的鏈接列表進行排序。

到目前為止我做了什么:

 public void insertSorted(Book book){
     if(books.getfirst()==null)
         books.addFirst(book); //books is the LinkedList name
     Node<Book> current =books.getfirst();
     for(int i=0; i<books.getSize(); i++){
        if(book.getTitle().compareToIgnoreCase(current.element.getTitle())<=0){
             books.add(book, i);

         }
     }

Linkedlist中的add方法:

public void add(Object x,int index){
    if(index==0)addFirst(x);
    else if(index>=getSize())addLast(x);
    else{
        Node current=first;
        for(int i=0; i<index-1;i++)
            current=current.next;
        Node temp = new Node(x);
        temp.next=current.next;
        current.next=temp;
        count++;
    }
}

我到底在做什么錯?

for(int i=0; i<books.getSize(); i++){
    if(book.getTitle().compareToIgnoreCase(current.element.getTitle())<=0){
         books.add(book, i);

     }

使用此語句(上面),您不會增加正在比較的當前Node for(;;)循環的每次迭代中,您都在比較要添加到List第一個元素的新Book

下面的代碼示例應解決此問題:

for(int i=0; i<books.getSize(); i++){
    if(book.getTitle().compareToIgnoreCase(current.element.getTitle())<=0){
         books.add(book, i);
         break;
     }
    else {
        current = current.next;
    }

編輯:根據@Eden Lu答案包括必需的break語句

將書添加到書中后,需要打破循環

books.add(書,I); 打破;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM