Created
January 1, 2025 15:05
-
-
Save iAmVishal16/00988fd1d977be664f35e6da74082ab3 to your computer and use it in GitHub Desktop.
LinkedList Demonstration in Swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Node { | |
var value: Int | |
var next: Node? | |
init(value: Int, next: Node?) { | |
self.value = value | |
self.next = next | |
} | |
convenience init(value: Int) { | |
self.init(value: value, next: nil) | |
} | |
} | |
class LinkedList { | |
var head: Node? | |
var tail: Node? | |
var size: Int | |
init() { | |
self.size = 0 | |
} | |
func insertFirst(_ val: Int) { | |
let node = Node(value: val) | |
node.next = head | |
head = node | |
if tail == nil { | |
tail = head | |
} | |
size += 1 | |
} | |
func insertLast(_ val: Int) { | |
while tail != nil { | |
insertFirst(val) | |
return | |
} | |
var node = Node(value: val) | |
tail?.next = node | |
tail = node | |
size += 1 | |
} | |
func deleteFirst() -> Int { | |
let val = head?.value ?? 0 | |
head = head?.next | |
if head == nil { | |
tail = nil | |
} | |
size -= 1 | |
return val | |
} | |
func deleteLast() -> Int { | |
if size <= 1 { | |
deleteFirst() | |
} | |
var secLast = get(size - 2) | |
let val = tail?.value | |
tail = secLast | |
tail?.next = nil | |
return val ?? 0 | |
} | |
func get(_ index: Int) -> Node? { | |
var node = head | |
for i in 0..<index { | |
node = node?.next | |
} | |
return node | |
} | |
func display() { | |
var temp = head | |
while temp != nil { | |
print("\(String(describing: temp!.value)) -> ", terminator: "") | |
temp = temp?.next | |
} | |
print("@End") | |
} | |
} | |
func performLinkedListOps() { | |
let ll = LinkedList() | |
ll.insertFirst(3) | |
ll.insertFirst(5) | |
ll.insertFirst(7) | |
ll.insertFirst(9) | |
ll.display() | |
ll.insertLast(10) | |
ll.display() | |
ll.deleteFirst() | |
ll.display() | |
ll.deleteLast() | |
ll.display() | |
print("LL size: \(ll.size)") | |
} | |
performLinkedListOps() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment