You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Для лучшего понимания мы рассмотрим ещё одну рекурсивную структуру под названием "связанный список", которая в некоторых случаях может использоваться в качестве альтернативы массиву.
405
+
Для лучшего понимания мы рассмотрим ещё одну рекурсивную структуру под названием "связный список", которая в некоторых случаях может использоваться в качестве альтернативы массиву.
406
406
407
-
### Связанный список
407
+
### Связный список
408
408
409
409
Представьте себе, что мы хотим хранить упорядоченный список объектов.
410
410
@@ -418,11 +418,11 @@ let arr = [obj1, obj2, obj3];
418
418
419
419
Единственные структурные изменения, не требующие массовой переиндексации - это изменения, которые выполняются с конца массива:`arr.push/pop`. Таким образом, массив может быть довольно медленным для больших очередей, когда нам приходится работать с его началом.
420
420
421
-
Или же, если нам действительно нужны быстрые вставка/удаление, мы можем выбрать другую структуру данных, называемую [связанный список](https://ru.wikipedia.org/wiki/Связный_список).
421
+
Или же, если нам действительно нужны быстрые вставка/удаление, мы можем выбрать другую структуру данных, называемую [связный список](https://ru.wikipedia.org/wiki/Связный_список).
422
422
423
-
Элемент *связанного списка* определяется рекурсивно как объект с:
423
+
Элемент *связного списка* определяется рекурсивно как объект с:
424
424
-`value`,
425
-
-`next`- свойство, ссылающееся на следующий *элемент связанного списка* или `null`, если это последний элемент.
425
+
-`next`- свойство, ссылающееся на следующий *элемент связного списка* или `null`, если это последний элемент.
426
426
427
427
Пример:
428
428
@@ -444,7 +444,7 @@ let list = {
444
444
445
445
Графическое представление списка:
446
446
447
-

447
+

448
448
449
449
Альтернативный код для создания:
450
450
@@ -465,7 +465,7 @@ let secondList = list.next.next;
@@ -490,15 +490,15 @@ list = { value: "new item", next: list };
490
490
*/!*
491
491
```
492
492
493
-

493
+

494
494
495
495
Чтобы удалить элемент из середины списка, нужно изменить значение `next` предыдущего элемента:
496
496
497
497
```js
498
498
list.next = list.next.next;
499
499
```
500
500
501
-

501
+

502
502
503
503
`list.next` перепрыгнуло с `1` на значение `2`. Значение `1` теперь исключено из цепочки. Если оно не хранится где-нибудь ещё, оно будет автоматически удалено из памяти.
504
504
@@ -525,7 +525,7 @@ list.next = list.next.next;
525
525
526
526
- [Рекурсивно определяемая](https://en.wikipedia.org/wiki/Recursive_data_type) структура данных - это структура данных, которая может быть определена с использованием самой себя.
527
527
528
-
Например, связанный список может быть определён как структура данных, состоящая из объекта, содержащего ссылку на список (или null).
528
+
Например, связный список может быть определён как структура данных, состоящая из объекта, содержащего ссылку на список (или null).
0 commit comments