代码

import UIKit

// 链表是一种物理存储单元上的非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接的次序实现的

// 每个节点包括两个部分,一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。
class LinkedListNode
{
    var content: Int
    var nextNode:LinkedListNode?
    
    init(_ content: Int)
    {
        self.content = content
        self.nextNode = nil
    }
}

// 添加一个类,用于模拟链表
class LinkedList
{
    // 添加两个节点类型的属性,作为链表中的头节点和尾节点
    var head: LinkedListNode?
    var end: LinkedListNode?
    // 添加一个方法,用来将一个节点添加到当前节点的头部
    func appendTohead(content:Int)
    {
        if head == nil
        {
            head = LinkedListNode(content)
            end = head
        }
        // 如果链表不为空,则初始化一个临时节点,将临时节点的指针指向头节点,然后将临时节点变为新的头节点
        else
        {
            let tmpNode = LinkedListNode(content)
            tmpNode.nextNode = head
            head = tmpNode
        }
    }
    // 添加一个方法,用来将一个节点添加到当前节点的尾部
    func appendToend(content:Int)
    {
        if end == nil
        {
            end = LinkedListNode(content)
            head = end
        }
        // 如果链表不为空,则初始化一个新的节点,将向尾节点的指针指向新节点,同时将新节点作为链表的尾点。
        else
        {
            end?.nextNode = LinkedListNode(content)
            end = end?.nextNode
        }
    }
}

Q.E.D.