я получил для домашней работы вопрос о связанном списке.у меня есть 2 класса связанного списка:
public class listOne
{
private int _num;
private listOne _next,_prev;
public listOne (int n)
{
_num=n;
_next=null;
_prev=null;
}
public listOne (int num,listOne n,listOne p)
{
_num=num;
_next=n;
_prev=p;
}
}
public class listTwo
{
private listOne _head,_tail;
public listTwo ()
{
_head=null;
_tail=null;
}
public listTwo (listOne h,listOne t)
{
_head=h;
_tail=t;
}
}
Теперь мне нужно написать логический метод, который возвращает истину, если есть подкласс, чье среднее значение равноданное среднее значение пользователем.и false, если нет, метод должен быть с эффективностью o (n), и если это возможно, он может быть лучше с o (1), метод будет записан в классе listTwo.
Сначала я подумал,рассчитать среднее значение по всему списку и подсчитать количество чисел в списке, а также проверить, равно ли среднее значение данному среднему.если среднее значение в списке больше заданного среднего, я вычту из суммы последнее число в списке и переместлю последний объект списка на один шаг назад и вычту 1 из подсчета.если среднее значение в списке меньше заданного среднего, я вычту из суммы первый объект, переместу первый объект на один шаг вперед и вычту 1 из переменной count.
Я думаю, что этот метод должен работать, но когда я пытаюсь написать его, я как бы застрял.Я пытаюсь написать метод, который перемещает последний объект на один шаг назад. Скажите, пожалуйста, правильно ли написан этот метод?:
private listOne newEnd(listOne list)
{
listOne p=_head,prev=null;
while(p!=null&&p.getNext()!=null)
{
prev=p;
p=p.getNext();
}
if(p!=null&&p.getNext()==null)
{
prev.setNext(p);
}
return p;
}
этот метод должен вернуть последний объект списка на один шаг назад.это правильно?спасибо}