Skip to content

Commit 3de5a1b

Browse files
committed
Fixed insert method and some related files.
1 parent 0b129e8 commit 3de5a1b

File tree

3 files changed

+24
-26
lines changed

3 files changed

+24
-26
lines changed

Diff for: Linked List/LinkedList.playground/Contents.swift

+10-11
Original file line numberDiff line numberDiff line change
@@ -145,17 +145,17 @@ public final class LinkedList<T> {
145145
/// - Parameters:
146146
/// - node: The node containing the value to be inserted
147147
/// - 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) {
150149
if index == 0 {
151150
newNode.next = head
152151
head?.previous = newNode
153152
head = newNode
154153
} else {
155-
let prev = self.node(atIndex: index-1)
154+
let prev = node(atIndex: index-1)
155+
let next = prev.next
156156
newNode.previous = prev
157-
newNode.next = prev.next
158-
prev.next?.previous = newNode
157+
newNode.next = next
158+
next?.previous = newNode
159159
prev.next = newNode
160160
}
161161
}
@@ -169,18 +169,17 @@ public final class LinkedList<T> {
169169
if list.isEmpty { return }
170170

171171
if index == 0 {
172-
let temp = head
172+
list.last?.next = head
173173
head = list.head
174-
list.last?.next = temp
175174
} 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
178177

179178
prev.next = list.head
180179
list.head?.previous = prev
181180

182-
list.last?.next = temp
183-
temp?.previous = list.last?.next
181+
list.last?.next = next
182+
next?.previous = list.last?.next
184183
}
185184
}
186185

Diff for: Linked List/LinkedList.swift

+9-10
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,17 @@ public final class LinkedList<T> {
100100
self.insert(newNode, atIndex: index)
101101
}
102102

103-
public func insert(_ node: Node, atIndex index: Int) {
104-
let newNode = node
103+
public func insert(_ newNode: Node, atIndex index: Int) {
105104
if index == 0 {
106105
newNode.next = head
107106
head?.previous = newNode
108107
head = newNode
109108
} else {
110-
let prev = self.node(atIndex: index-1)
109+
let prev = node(atIndex: index-1)
110+
let next = prev.next
111111
newNode.previous = prev
112-
newNode.next = prev.next
113-
prev.next?.previous = newNode
112+
newNode.next = next
113+
next?.previous = newNode
114114
prev.next = newNode
115115
}
116116
}
@@ -119,18 +119,17 @@ public final class LinkedList<T> {
119119
if list.isEmpty { return }
120120

121121
if index == 0 {
122-
let temp = head
122+
list.last?.next = head
123123
head = list.head
124-
list.last?.next = temp
125124
} else {
126125
let prev = self.node(atIndex: index-1)
127-
let temp = prev.next
126+
let next = prev.next
128127

129128
prev.next = list.head
130129
list.head?.previous = prev
131130

132-
list.last?.next = temp
133-
temp?.previous = list.last?.next
131+
list.last?.next = next
132+
next?.previous = list.last?.next
134133
}
135134
}
136135

Diff for: Linked List/README.markdown

+5-5
Original file line numberDiff line numberDiff line change
@@ -330,18 +330,18 @@ Finally, replace the head with the new node.
330330
| C | | A | | B |
331331
nil <---| |<---| |<----| |<----//------
332332
+---------+ +---------+ +---------+
333-
[0] [1]
333+
[0] [1] [2]
334334

335335

336336
However, when the given index is greater than 0, it is necessary to get the node previous and next index and insert between them.
337337
You can also obtain the previous and next node using node(atIndex:) as follows:
338338

339339
+---------+ +---------+ +---------+
340340
head --->| |---//--->| |---->| |----
341-
| 0 | | A | | B |
341+
| | | A | | B |
342342
nil <---| |---//<---| |<----| |<---
343343
+---------+ +---------+ +---------+
344-
[index-1] [index]
344+
[0] [index-1] [index]
345345
^ ^
346346
| |
347347
prev next
@@ -356,10 +356,10 @@ Now insert new node between the prev and the next.
356356

357357
+---------+ +---------+ +---------+ +---------+
358358
head --->| |---//--->| |---->| |---->| |
359-
| 0 | | A | | C | | B |
359+
| | | A | | C | | B |
360360
nil <---| |---//<---| |<----| |<----| |
361361
+---------+ +---------+ +---------+ +---------+
362-
[index-1] [index] [index+1]
362+
[0] [index-1] [index] [index+1]
363363
^ ^ ^
364364
| | |
365365
prev new next

0 commit comments

Comments
 (0)