17 лучших вопросов и ответов на собеседовании по связанному списку
Вот вопросы и ответы на собеседовании в Linked List для новичков, а также для опытных кандидатов, желающих получить работу своей мечты.
1) Упомяните, что такое связанные списки?
Связанный список — это структура данных, в которой может храниться коллекция элементов. Другими словами, связанные списки можно использовать для хранения нескольких объектов одного типа. Каждая единица или элемент списка называется узлом. Каждый узел имеет свои данные и адрес следующего узла. Это как цепь. Связанные списки используются для создания графиков и деревьев.
Бесплатная загрузка в формате PDF: Связанный список вопросов и ответов для интервью
2) Какой тип распределения памяти используется для связанных списков?
Динамическое распределение памяти относится к связанным спискам.
3) Упомяните, что такое обход в связанных списках?
Термин «Обход» используется для обозначения операции обработки каждого элемента в списке.
4) Опишите, что такое Node в списке ссылок? А назовите типы связанных списков?
Вместе (данные + ссылка) называется Node. Типы связанных списков:
- Односвязный список
- Двусвязный список
- Многосвязный список
- Циркулярный связанный список
5) Упомяните, что такое односвязный список?
Односвязный список — это разновидность структура данных. В односвязном списке каждый узел в списке хранит содержимое узла и ссылку или указатель на следующий узел в списке. Он не хранит никаких ссылок или указателей на предыдущий узел.
6) Укажите, в чем разница между линейным массив и связанный список?
Разница между линейным массивом и связанным списком показана ниже:
Linear Array | Связанный список |
---|---|
Удаление и вставка затруднены. | Удаление и вставку можно легко выполнить. |
Для вставки и удаления нужны движения | Для вставки и удаления не требуется перемещения узлов |
В нем пространство тратится впустую | В нем место не тратится зря |
Это дорого | Это не дорого |
Он не может быть уменьшен или расширен в соответствии с требованиями. | Его можно уменьшить или расширить в соответствии с требованиями. |
Для использования каждого элемента требуется одинаковое количество времени. | Для использования каждого элемента требуется разное количество времени. |
В последовательных ячейках памяти хранятся элементы. | Элементы могут храниться или не храниться в последовательных ячейках памяти. |
Мы можем добраться туда напрямую, если нам нужно перейти к определенному элементу. | Чтобы достичь определенного узла, вам нужно пройти через все те узлы, которые предшествуют этому узлу. |
7) Укажите, каково применение связанных списков?
Применение связанных списков:
- Связанные списки используются для реализации очередей, стеков, графиков и т. д.
- В связанных списках вам не нужно заранее знать размер.
- Связанные списки позволяют вставлять элементы в начало и конец списка.
8) Что содержит фиктивный заголовок в связанном списке?
В связанном списке фиктивный заголовок содержит первую запись фактических данных.
9) Укажите, как вставить данные в начало односвязного списка?
Шаги по вставке данных в начало односвязного списка включают в себя:
- Создать новый узел
- Вставьте новый узел, назначив указатель головы следующему указателю нового узла.
- Обновление указателя головы до точки нового узла.
Node *head; void InsertNodeAtFront(int data) { /* 1. create the new node*/ Node *temp = new Node; temp->data = data; /* 2. insert it at the first position*/ temp->next = head; /* 3. update the head to point to this new node*/ head = temp; }
10) Укажите, в чем разница между односвязными и двусвязными списками?
Узлы двусвязного списка содержат три поля:
- Целочисленное значение и
- Две ссылки на другие узлы
- один, чтобы указать на предыдущий узел и
- другой, чтобы указать на следующий узел.
Тогда как односвязный список содержит точки только до следующего узла.
11) Укажите, какие приложения используют связанные списки?
И очереди, и стеки часто реализуются с использованием связанных списков. Другие приложения — список, двоичное дерево, пропуск, развернутый связанный список, хэш-таблица и т. д.
12) Объясните, как добавить элемент в начало списка?
Чтобы добавить элемент в начало списка, необходимо сделать следующее:
- Создайте новый элемент и установите его значение
- Свяжите новый элемент, чтобы он указывал на начало списка.
- Установите начало списка в качестве нашего нового элемента.
Если вы используете функцию для выполнения этой операции, вам необходимо изменить переменную head. Для этого необходимо передать указатель на переменную указателя (двойной указатель). поэтому вы сможете изменить сам указатель.
13) Назовите, какое самое большое преимущество связанных списков?
Самым большим преимуществом связанных списков является то, что вы не указываете фиксированный размер списка. Чем больше элементов вы добавляете в цепочку, тем больше она становится.
14) Подскажите, как удалить первый узел из односвязного списка?
Чтобы удалить первый узел из односвязного списка
- Сохраните текущее начало в другом временном указателе
- Переместить указатель начала на одну позицию вперед
- Удалить временный, т. е. предыдущий начальный узел, поскольку у нас есть обновленная версия указателя запуска.
15) Укажите, как отображать односвязный список от первого до последнего?
Чтобы отобразить односвязный список от первого до последнего,
- Создайте связанный список с помощью метода create().
- Вы не можете изменить адрес, хранящийся внутри глобальной переменной «start», поэтому вам необходимо объявить одну временную переменную — «temp» типа node.
- Чтобы пройти от начала до конца, вы должны выделить адрес начального узла в переменной указателя, т.е. temp.
struct node *temp; //Declare temp temp = start; //Assign Starting Address to temp
Если температура равна NULL, вы можете сказать, что достигнут последний узел.
while(temp!=NULL) { printf("%d",temp->data); temp=temp->next; }
16) Укажите, как вставить новый узел в связанный список, где будет доступен свободный узел?
Чтобы вставить новый узел в связанный список, свободный узел будет доступен в списке доступных.
17) Укажите, в каком списке заголовков вы обнаружите, что последний узел содержит нулевой указатель?
В списке заземленных заголовков вы обнаружите, что последний узел содержит нулевой указатель.
Эти вопросы для собеседования также помогут вам в устной речи.
Так мило
это очень хорошие вопросы……………
Мне это очень помогло, спасибо
пожалуйста, как я могу решить эту проблему
(связанный список с фиктивным головным узлом)
Учитывая два связанных списка L1 и L2, определите процедуру на псевдоязыке, которая использует связанный список ADT для вставки L2 после третьего элемента от последнего из L1.
Если L1 — 1-2-3-4-5-6-7-8-9, а L2 — 1-1-1
The result is 1-2-3-4-5-6-7-1-1-1-8-9
вам нужно сначала пройти L1 с помощью двух указателей:
указатель1 – один шаг от головы.
указатель2 – 3 шага от головы.
в то время как (pointer2.next!=null){
указатель2 = указатель2.следующий;
указатель1 = указатель1.следующий;
}
// теперь у вас будет указатель 1, указывающий на третий узел от последнего.
темп = указатель1.следующий
указатель1.следующий = L2;
traversL2 до конца, чтобы получить последний элемент ->
LastElementOfL2.Next = темп;
...
Очень хорошо