为有牺牲多壮志,敢教日月换新天。

[Swift实际操作]八、实用进阶-(9)Swift中的链表LinkedList详解

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

链表是一种物理存储单元上的非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。
相比于线性表的顺序结构,链表比较方便插入和删除操作。本文将讲解如何模拟一个链表。

复制代码
 1 //链表的节点类
 2 class ListNode
 3 {
 4     //链表的节点由两部分组成:数据域、指针域
 5     //添加一个整形类型的数组属性,作为链表的数据域   
 6     var content:Int
 7     //添加一个节点类型的属性,作为存储下一个节点地址的指针
 8     var nextNode: ListNode?
 9     
10     //节点类初始化方法
11     init(_ content:Int)
12     {
13     //对节点的两个部分进行初始化
14     self.content = content
15     self.nextNode = nil
16     }
17 }
18 
19 //链表类
20 class LinkedList
21 {
22     //头节点
23     var head:ListNode?
24     //尾节点
25     var end:ListNode?
26     
27     //链表头插节点
28     func appendToHead(content:Int)
29     {
30         //判断头结点是否为空
31         if head == nil
32         {
33             //如果链表为空则初始化,
34             //使其即是头结点,也是尾节点
35             head = ListNode(content)
36             end = head
37         }
38         else
39         {
40             //如果链表不为空,则初始化一个临时节点,
41             let temporaryNode = ListNode(content)
42             //将临时节点的指针指向头结点,
43             temporaryNode.nextNode = head
44             //然后临时节点变为新的头结点
45             head = temporaryNode
46         }
47     }
48     
49     //链表尾插节点
50     //链表头插节点
51     func appendToEnd(content:Int)
52     {
53         //判断尾结点是否为空
54         if head == nil
55         {
56             //如果链表为空则初始化,
57             //使其即是头结点,也是尾节点
58             end = ListNode(content)
59             head = end
60         }
61         else
62         {
63             //如果链表不为空,则初始化一个新节点,
64             //将指向尾节点的新指针指向新节点
65             end?.nextNode = ListNode(content)
66             //然后新节点作为链表尾结点
67             end = nd?.nextNode 
68         }
69     }  
70 }
复制代码

 

posted @   为敢技术  阅读(235)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
西雅图
10:14发布
西雅图
10:14发布
4°
南风
3级
空气质量
相对湿度
94%
今天
小雨
3°/9°
周二
小雨
3°/9°
周三
中雨
5°/9°