Программирование : Вопрос 1 : 17

Придумайте алгоритм поиска n-го с конца элемента односвязного списка, сложность которого будет равна O(N). Алгоритм не должен использовать дополнительные структуры - массивы, списки и т.д., только примитивные типы. 
Исходные данные: "голова" односвязного списка и индекс (с конца) искомого элемента.

 

Уважаемые учащиеся ниже Вы сможете увидеть ответ, перед тем, как ответить, пожалуйста, постарайтесь написать для себя ответ на черновике, и только потом сравните наш ответ с Вашим: 

 

 

 

Верно ли наше решение?

Ответ:

Реализация на java:

class ListItem{ 
    public int value = 0; 
    public ListItem NextItem = null; 
} 
 
class Sulution{ 
    public static ListItem Search(ListItem StartItem, int OffsetFromEnd){ 
        ListItem OffsetedItem = StartItem; 
        do{ 
            if (OffsetFromEnd == 0){ 
                OffsetedItem = OffsetedItem.NextItem; 
            } else { 
                OffsetFromEnd--; 
            } 
            StartItem = StartItem.NextItem; 
        } while (StartItem.NextItem != null); 
        return OffsetedItem; 
    } 
} 

1 балл


© Copyright © 2017 - 2019 Все права защищены. Бесплатное онлайн образование.