Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit90d8a3f

Browse files
Stulov Alextrekhleb
Stulov Alex
authored andcommitted
Translate into Russian (trekhleb#275)
* Translate LinkedList README in Russian.* Translate missed sentence. Add link to Chinese README.
1 parent98eb9ae commit90d8a3f

File tree

2 files changed

+160
-0
lines changed

2 files changed

+160
-0
lines changed
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
#Связный список
2+
Связный список — базовая динамическая структура данных в информатике,
3+
состоящая из узлов, каждый из которых содержит как собственно данные,так ссылку
4+
(«связку») на следующий узел списка. Данная структура позволяет эффективно
5+
добавлять и удалять элементы на произвольной позиции в последовательности в
6+
процессе итерации. Более сложные варианты включают дополнительные ссылки,
7+
позволяющие эффективно добавлять и удалять произвольные элементы.
8+
9+
Принципиальным преимуществом перед массивом является структурная гибкость:
10+
порядок элементов связного списка может не совпадать с порядком расположения
11+
элементов данных в памяти компьютера, а порядок обхода списка всегда
12+
явно задаётся его внутренними связями. Суть преимущества состоит в том,
13+
что во многих языках создание массива требует указать его размер заранее.
14+
Связный список позволяет обойти это ограничение.
15+
16+
Недостатком связных списков является то, что время доступа линейно
17+
(и затруднительно для реализации конвейеров). Быстрый доступ(случайный)
18+
невозможен.
19+
20+
![Связный список](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
21+
22+
##Псевдокод основных операций
23+
24+
###Вставка
25+
26+
```text
27+
Add(value)
28+
Pre: value - добавляемое значение
29+
Post: value помещено в конец списка
30+
n ← node(value)
31+
if head = ø
32+
head ← n
33+
tail ← n
34+
else
35+
tail.next ← n
36+
tail ← n
37+
end if
38+
end Add
39+
```
40+
41+
```text
42+
Prepend(value)
43+
Pre: value - добавляемое значение
44+
Post: value помещено в начало списка
45+
n ← node(value)
46+
n.next ← head
47+
head ← n
48+
if tail = ø
49+
tail ← n
50+
end
51+
end Prepend
52+
```
53+
54+
###Поиск
55+
56+
```text
57+
Contains(head, value)
58+
Pre: head - первый узел в списке
59+
value - значение, которое следует найти
60+
Post: true - value найдено в списке, иначе false
61+
n ← head
62+
while n != ø and n.value != value
63+
n ← n.next
64+
end while
65+
if n = ø
66+
return false
67+
end if
68+
return true
69+
end Contains
70+
```
71+
72+
###Удаление
73+
74+
```text
75+
Remove(head, value)
76+
Pre: head - первый узел в списке
77+
value - значение, которое следует удалить
78+
Post: true - value удалено из списка, иначе false
79+
if head = ø
80+
return false
81+
end if
82+
n ← head
83+
if n.value = value
84+
if head = tail
85+
head ← ø
86+
tail ← ø
87+
else
88+
head ← head.next
89+
end if
90+
return true
91+
end if
92+
while n.next != ø and n.next.value != value
93+
n ← n.next
94+
end while
95+
if n.next != ø
96+
if n.next = tail
97+
tail ← n
98+
end if
99+
n.next ← n.next.next
100+
return true
101+
end if
102+
return false
103+
end Remove
104+
```
105+
106+
###Обход
107+
108+
```text
109+
Traverse(head)
110+
Pre: head - первый узел в списке
111+
Post: элементы списка пройдены
112+
n ← head
113+
while n != ø
114+
yield n.value
115+
n ← n.next
116+
end while
117+
end Traverse
118+
```
119+
120+
###Обратный обход
121+
122+
```text
123+
ReverseTraversal(head, tail)
124+
Pre: head и tail отноcятся к одному списку
125+
Post: элементы списка пройдены в обратном порядке
126+
if tail != ø
127+
curr ← tail
128+
while curr != head
129+
prev ← head
130+
while prev.next != curr
131+
prev ← prev.next
132+
end while
133+
yield curr.value
134+
curr ← prev
135+
end while
136+
yeild curr.value
137+
end if
138+
end ReverseTraversal
139+
```
140+
141+
##Сложность
142+
143+
###Временная сложность
144+
145+
| Чтение| Поиск| Вставка| Удаление|
146+
| :-------:| :-------:| :-------:| :-------:|
147+
| O(n)| O(n)| O(1)| O(1)|
148+
149+
###Пространственная сложность
150+
151+
O(n)
152+
153+
##Ссылки
154+
155+
-[Wikipedia](https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D1%8F%D0%B7%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA)
156+
-[YouTube](https://www.youtube.com/watch?v=njTh_OwMljA&index=2&t=1s&list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8)

‎src/data-structures/linked-list/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
#Linked List
22

3+
_Read this in other languages:_
4+
[_简体中文_](README.zh-CN.md),
5+
[_Русский_](README.ru-RU.md)
6+
37
In computer science, a**linked list** is a linear collection
48
of data elements, in which linear order is not given by
59
their physical placement in memory. Instead, each

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp