Перечень вопросов здесь.
1. How do you check whether a linked list is circular?
Про связные списки бегло читать на википедии.
Реализацию односвязного списка средствами C++ можно наблюдать, например, вот тут. Новые элементы добавляются в начало списка.
Сначала отступление и лирика. Какой список содержит циклы? Тот, в котором присутствуют повторения элементов. Поэтому, список не содержит циклы, если в нём присутствуют уникальные элементы (если что - вопрос не об этом :)).
Решение нуль: сформировать std::set из элементов связного списка; если размер сформированного std::set меньше чем размер связного списка, то в списке существуют циклы, число которых равно разности размеров списка и множества std::set.
Решение про цикличный связный список: список является цикличным если его первый элемент соответствует элементу, следующему за последним (определение); поэтому, нужно перейти к последнему элементу и сравнить головной_элемент списка списка с последний_элемент->следующий_элемент.
2. How do you decide which integer type to use?
Про типы можно почитать здесь.
Ответ: выбор целочисленного типа определяется прикладной задачей, решаемой в рамках данной предметной области; первое - это ширина коридора принимаемых значений переменной целочисленного типа (char, short, int, long; с использованием модификаторов signed, unsigned), второе - количество памяти, отводимое под переменную соответствующего типа (8, 16, 32 бита).
Комментариев нет:
Отправить комментарий