Skip to content

Instantly share code, notes, and snippets.

@iAmVishal16
Created January 1, 2025 15:05
Show Gist options
  • Save iAmVishal16/00988fd1d977be664f35e6da74082ab3 to your computer and use it in GitHub Desktop.
Save iAmVishal16/00988fd1d977be664f35e6da74082ab3 to your computer and use it in GitHub Desktop.
LinkedList Demonstration in Swift
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