File tree 3 files changed +24
-26
lines changed
3 files changed +24
-26
lines changed Original file line number Diff line number Diff line change @@ -145,17 +145,17 @@ public final class LinkedList<T> {
145
145
/// - Parameters:
146
146
/// - node: The node containing the value to be inserted
147
147
/// - index: Integer value of the index to be inserted at
148
- public func insert( _ node: Node , atIndex index: Int ) {
149
- let newNode = node
148
+ public func insert( _ newNode: Node , atIndex index: Int ) {
150
149
if index == 0 {
151
150
newNode. next = head
152
151
head? . previous = newNode
153
152
head = newNode
154
153
} else {
155
- let prev = self . node ( atIndex: index- 1 )
154
+ let prev = node ( atIndex: index- 1 )
155
+ let next = prev. next
156
156
newNode. previous = prev
157
- newNode. next = prev . next
158
- prev . next? . previous = newNode
157
+ newNode. next = next
158
+ next? . previous = newNode
159
159
prev. next = newNode
160
160
}
161
161
}
@@ -169,18 +169,17 @@ public final class LinkedList<T> {
169
169
if list. isEmpty { return }
170
170
171
171
if index == 0 {
172
- let temp = head
172
+ list . last ? . next = head
173
173
head = list. head
174
- list. last? . next = temp
175
174
} else {
176
- let prev = self . node ( atIndex: index- 1 )
177
- let temp = prev. next
175
+ let prev = node ( atIndex: index- 1 )
176
+ let next = prev. next
178
177
179
178
prev. next = list. head
180
179
list. head? . previous = prev
181
180
182
- list. last? . next = temp
183
- temp ? . previous = list. last? . next
181
+ list. last? . next = next
182
+ next ? . previous = list. last? . next
184
183
}
185
184
}
186
185
Original file line number Diff line number Diff line change @@ -100,17 +100,17 @@ public final class LinkedList<T> {
100
100
self . insert ( newNode, atIndex: index)
101
101
}
102
102
103
- public func insert( _ node: Node , atIndex index: Int ) {
104
- let newNode = node
103
+ public func insert( _ newNode: Node , atIndex index: Int ) {
105
104
if index == 0 {
106
105
newNode. next = head
107
106
head? . previous = newNode
108
107
head = newNode
109
108
} else {
110
- let prev = self . node ( atIndex: index- 1 )
109
+ let prev = node ( atIndex: index- 1 )
110
+ let next = prev. next
111
111
newNode. previous = prev
112
- newNode. next = prev . next
113
- prev . next? . previous = newNode
112
+ newNode. next = next
113
+ next? . previous = newNode
114
114
prev. next = newNode
115
115
}
116
116
}
@@ -119,18 +119,17 @@ public final class LinkedList<T> {
119
119
if list. isEmpty { return }
120
120
121
121
if index == 0 {
122
- let temp = head
122
+ list . last ? . next = head
123
123
head = list. head
124
- list. last? . next = temp
125
124
} else {
126
125
let prev = self . node ( atIndex: index- 1 )
127
- let temp = prev. next
126
+ let next = prev. next
128
127
129
128
prev. next = list. head
130
129
list. head? . previous = prev
131
130
132
- list. last? . next = temp
133
- temp ? . previous = list. last? . next
131
+ list. last? . next = next
132
+ next ? . previous = list. last? . next
134
133
}
135
134
}
136
135
Original file line number Diff line number Diff line change @@ -330,18 +330,18 @@ Finally, replace the head with the new node.
330
330
| C | | A | | B |
331
331
nil <---| |<---| |<----| |<----//------
332
332
+---------+ +---------+ +---------+
333
- [0] [1]
333
+ [0] [1] [2]
334
334
335
335
336
336
However, when the given index is greater than 0, it is necessary to get the node previous and next index and insert between them.
337
337
You can also obtain the previous and next node using node(atIndex:) as follows:
338
338
339
339
+---------+ +---------+ +---------+
340
340
head --->| |---//--->| |---->| |----
341
- | 0 | | A | | B |
341
+ | | | A | | B |
342
342
nil <---| |---//<---| |<----| |<---
343
343
+---------+ +---------+ +---------+
344
- [index-1] [index]
344
+ [0] [index-1] [index]
345
345
^ ^
346
346
| |
347
347
prev next
@@ -356,10 +356,10 @@ Now insert new node between the prev and the next.
356
356
357
357
+---------+ +---------+ +---------+ +---------+
358
358
head --->| |---//--->| |---->| |---->| |
359
- | 0 | | A | | C | | B |
359
+ | | | A | | C | | B |
360
360
nil <---| |---//<---| |<----| |<----| |
361
361
+---------+ +---------+ +---------+ +---------+
362
- [index-1] [index] [index+1]
362
+ [0] [index-1] [index] [index+1]
363
363
^ ^ ^
364
364
| | |
365
365
prev new next
You can’t perform that action at this time.
0 commit comments