Я написал простой простой код для обмена двух elemnts в списке, который выглядит следующим образом:Поменять местами два элемента
public void swap(Item a, Item aprev, Item b, Item bprev){
aprev.next = b;
bprev.next = a;
}
Сейчас. Если я хочу поменять два элемента, ничего не изменится. Поэтому, если я это сделаю:
SelectionSortableList list = new SelectionSortableList();
Item item = list.new Item("4");
Item item1 = list.new Item("5");
Item item2 = list.new Item("6");
Item item3 = list.new Item("7");
list.addFront(item.value);
list.addFront(item1.value);
list.addFront(item2.value);
list.addFront(item3.value);
System.out.println(list.toString());
list.swap(item1, item, item3, item2);
System.out.println(list.toString());
/* */ public abstract class SinglyLinkedList
/* */ {
/* */ protected SinglyLinkedList.Item head;
/* */
/* */ public void addFront(String s) {
/* 6 */ if (head == null) {
/* 7 */ head = new SinglyLinkedList.Item(s);
/* */ }
/* */ else {
/* 10 */ SinglyLinkedList.Item insert = new SinglyLinkedList.Item(s);
/* 11 */ next = head;
/* 12 */ head = insert;
/* */ }
/* */ }
/* */
/* */ public void add(String[] array) { String[] arrayOfString;
/* 17 */ int j = (arrayOfString = array).length;
for (int i = 0; i < j; i++) { String s = arrayOfString[i];
/* 18 */ addFront(s);
/* */ }
/* */ }
/* */
/* */ public String toString()
/* */ {
/* 24 */ if (head == null) {
/* 25 */ return "empty list";
/* */ }
/* 27 */ String s = "";
/* */
/* 29 */ for (SinglyLinkedList.Item helper = head; next != null;
helper = next) {
/* 30 */ s = String.valueOf(s) + value + ", ";
/* */ }
/* 32 */ s = String.valueOf(s) + value;
/* 33 */ return s;
/* */ }
/* */
/* */ public abstract void sort();
/* */
/* */ protected class Item
/* */ {
/* */ public Item next;
/* */ public String value;
/* */
/* */ public Item(String value) {
/* 44 */ this.value = value;
/* */ }
/* */ }
/* */ }
Извините за этот беспорядок, но это декомпилированная банка. И вот мой еще незавершенный класс:
public class SelectionSortableList extends SinglyLinkedList{
public Item head;
public SelectionSortableList(){
this.head = new Item(null);
}
public void swap(Item a, Item aprev, Item b, Item bprev){
aprev.next = b;
bprev.next = a;
}
Ничего не меняется, и он печатает мне тот же список, что и раньше. Я действительно понятия не имею, почему это не работает. Было бы здорово, если кто-то может дать мне совет, или, может быть, если я напишу немного больше. Спасибо заранее!
Мы действительно не можем помочь без реализации SelectionSortableList и Item – Idos
Предлагаю вам выполнить свой код в своем отладчике, чтобы узнать, что он делает. –
Ошибки в 'SinglyLinkedList', они не будут компилироваться (что' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '', но что? –