一、链表节点
class ListNode {
var val: Int
var node: ListNode
init(_ val: Int){
self.val = val
self.node = nil
}
}
二、通过节点实现链表
class List {
var head: ListNode?
var tail: ListNode?
// 尾插法
func appendToTail(_ val: Int) {
if tail == nil { // 确定头部节点
tail = ListNode(val)
head = tail
} else {
// 如下方式保证了尾部节点始终为传入的最新节点
tail?.next = ListNode(val)
tail = tail?.next
}
}
// 头插法
/*
头插法就是从后往前寻找节点,当前传入的节点在链表中位于head节点之前
*/
func appendToHead(_ val: Int) {
if head == nil {
head = ListNode(val)
tail = head
} else {
let temp = ListNode(val)
temp.next = head
head &