public class BookList2 { //Data DoublyLinkedList data; //java.util.LinkedList<Book> data; //Constructor public BookList2() { data = new DoublyLinkedList(); //data = new java.util.LinkedList<Book>(); } //Public methods public int addBook(Book b) { boolean flag = false; int i = 0; for(; i < data.size(); i++) { Book w = (Book)data.get(i); //Book w = data.get(i); if(b.compareTo(w) < 0) { data.add(i,b); flag = true; break; } else if(b.compareTo(w) == 0) { flag = true; w.quantity += b.quantity; break; } } if(!flag) data.add(i,b); return b.quantity; } public int saleBook(Book b) throws BookNotFoundException { for(int i = 0; i < data.size(); i++) { Book w = (Book)data.get(i); //Book w = data.get(i); if(b.compareTo(w) == 0) { int q1 = w.quantity; int q2 = b.quantity; if (q1 > q2) { w.quantity = q1 - q2; return q2; } else { data.remove(i); return q1; } } } throw new BookNotFoundException(b.bookID + " " + b.title + " not found"); } public BookList2 getBooks(String author) { BookList2 newList = new BookList2(); Iterator it = data.iterator(); //java.util.Iterator<Book> it = data.iterator(); while(it.hasNext()) { Book w = (Book)it.next(); //Book w = it.next(); if(author.equals(w.author)) newList.addBook(w); } return newList; } public int doRequest(Request r) { int sum = 0; if(r.kind == 1) for(int i = 0; i < r.books.length; i++) sum += addBook(r.books[i]); else for(int i = 0; i < r.books.length; i++) try { sum += saleBook(r.books[i]); }catch (BookNotFoundException e) { System.out.println(e.toString());} return sum; } public void show() { Iterator it = data.iterator(); //java.util.Iterator<Book> it = data.iterator(); while(it.hasNext()) System.out.println(it.next()); } }