Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Не могу понять суть проблемы....


Автор: qw1mb0 6.5.2010, 10:35
Код


public class ListEl {
Object inf;
ListEl next;
ListEl(){next=null; inf=null;}
ListEl(Object ob){inf=ob; next=null;}

public static void addToList(ListEl hd, Object ob){
    ListEl e=new ListEl(ob);
    if(hd.next!=null){ListEl old=hd.next;hd.next=e;e.next=old;}
    else hd.next=e;
}
public static void printMyList(ListEl a){
    ListEl c=a.next;
    if(a.inf!=null)System.out.print(a.inf+": ");
    while(c!=null){
        System.out.print(c.inf+ " ");
        c=c.next;
    
    }
}
public static void main(String[]args){
    ListEl list=new ListEl("Список 1");
    for(int i=0;i<10;i++)
    addToList(list,Integer.toString(i*i));
    printMyList(list);
    
    
}
public static void reverse(ListEl list) {
    ListEl prev = null;
    ListEl e = list.next;
    while(e != null) {
        ListEl next = e.next;
        e.next = prev;
        prev = e;
        e = next;
    }
    list.next = prev;
    
    printMyList(list);
}
}



Во общем вот программа. Не могу понять почему метод reverse не работает. Если кто найдет ошибку прошу отписаться))

Автор: jk1 6.5.2010, 17:54
У меня ваш метод работает. Может быть дело в том, что из вашего кода метод  reverse() не вызывается?

Автор: Djinn 6.5.2010, 19:54
Цитата(qw1mb0 @  6.5.2010,  10:35 Найти цитируемый пост)
printMyList(list);

Это замена на

Цитата(qw1mb0 @  6.5.2010,  10:35 Найти цитируемый пост)
reverse(list)


строка 25.

Вроде так

Автор: qw1mb0 6.5.2010, 20:50
Цитата(jk1 @ 6.5.2010,  17:54)
У меня ваш метод работает. Может быть дело в том, что из вашего кода метод  reverse() не вызывается?

Цитата

У меня ваш метод работает. Может быть дело в том, что из вашего кода метод  reverse() не вызывается?

Вот именно это и есть причиной неполадки


Цитата

Цитата(qw1mb0 @  6.5.2010,  10:35 Найти цитируемый пост)
printMyList(list);

Это замена на

Цитата(qw1mb0 @  6.5.2010,  10:35 Найти цитируемый пост)
reverse(list)


строка 25.

Вроде так

Спасибо помогло добавил просто а не заменил и выводит то что я хотел

Автор: Djinn 6.5.2010, 20:57
Цитата(qw1mb0 @  6.5.2010,  20:50 Найти цитируемый пост)
Спасибо помогло добавил просто а не заменил и выводит то что я хотел 

написал заменить потому как:
Код

public static void reverse(ListEl list) {
    ListEl prev = null;
    ListEl e = list.next;
    while(e != null) {
        ListEl next = e.next;
        e.next = prev;
        prev = e;
        e = next;
    }
    list.next = prev;
    
    printMyList(list);
}
}

собственно фкнкция "reverse" и так вызывает функцию "printMyList(list)"(строка 12 у меня) а значит 2 раза незачем её вызывать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)