Jump to content

Singly-linked list/Element removal: Difference between revisions

Added Kotlin
(Added Kotlin)
Line 111:
</lang>
No label, no nasty literal GO TO - even though an "END DO" hides one.
 
=={{header|Kotlin}}==
<lang scala>// version 1.1.1
 
class Node<T: Number>(var data: T, var next: Node<T>? = null) {
override fun toString(): String {
val sb = StringBuilder(this.data.toString())
var node = this.next
while (node != null) {
sb.append(" -> ", node.data.toString())
node = node.next
}
return sb.toString()
}
}
 
fun <T: Number> insertAfter(prev: Node<T>, new: Node<T>) {
new.next = prev.next
prev.next = new
}
 
fun <T: Number> remove(first: Node<T>, removal: Node<T>) {
if (first === removal)
first.next = null
else {
var node: Node<T>? = first
while (node != null) {
if (node.next === removal) {
val next = removal.next
removal.next = null
node.next = next
return
}
node = node.next
}
}
}
fun main(args: Array<String>) {
val b = Node(3)
val a = Node(1, b)
println("Before insertion : $a")
val c = Node(2)
insertAfter(a, c)
println("After insertion : $a")
remove(a, c) // remove node we've just inserted
println("After 1st removal : $a")
remove(a, b) // remove last node
println("After 2nd removal : $a")
}</lang>
 
{{out}}
<pre>
Before insertion : 1 -> 3
After insertion : 1 -> 2 -> 3
After 1st removal : 1 -> 3
After 2nd removal : 1
</pre>
 
=={{header|Visual Basic .NET}}==
9,485

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.