type
status
date
slug
summary
tags
category
icon
password
intNode
这里把intList变成了intNode,目前只是改了个名字,还没有很大差别
SLList
构建
这里定义了一个sllist,里面调用intnode,好处是在初始化的时候不需要手动输入null了,这里会自动设置好
addfirst、getfirst
这里给出了两种新的方法,一个是添加到首位,一个是获得首位
这里其实跟 cs50 中学链表的感觉很像,就是一直有一个
first
用于指示链表的表头如果需要添加的话,更新表头指向即可
权限控制

类与方法分为
public
和private
- 封装:
private
关键字是实现封装的一种手段。它隐藏了类的内部状态和功能实现细节,只通过public
接口暴露必要的操作。这种封装可以防止外部代码干扰内部操作,从而保持数据的完整性和安全性。
- 维护性:使用
private
可以更安全地修改类的内部实现,而不担心会对依赖于这些内部实现的外部代码造成破坏。这提高了代码的维护性。
- 可访问性:
public
成员在任何地方都可以被访问,这在创建通用库和API时非常有用,需要让外部用户访问和使用这些功能。
static
- 定义:内部类可以被声明为
static
。这样的内部类被称为静态嵌套类。
- 用途:用于当内部类不需要访问外围实例的成员,或当你希望使用内部类而不创建外部类的实例时。
也就是只依靠内部参数,不需要访问外部的类即可声明为 static
addlast
没什么特别的,就是定义一个新的“指针 p”,一直让他指到表的末尾,并在末尾接上新的一个 intnode,实现添加
size
这里构造了一个 private 的辅助函数,用于编写 size 的内部过程
同时,由于 sllist 不同于 intlist,只是一个写入链表数据的中间结构,而非链表本身,因此需要传入表头,也就是 first,将这个 intnode 传入内部的 size 方法中
cache
这里对于 SLList 添加了一个 size 的变量,用于直接存储 size 大小,而非在需要时再逐一访问并计算
当建立 SLList 的时候,初始化 size 为 1
调用 addfirst、addlast 时,size 加一
对于方法 size,直接返回对应的 size 变量即可
空表
一个创建空表的方法,对应的地址为空,大小是 0
修改 addlast 方法
在加入空表这个概念后,如果直接对空表进行 addlast 操作,会出现问题:无法让一个空地址去指向一个地址
因此对于 addlast 方法,需要加以完善,对于 first 是否为空做一个判断
哨兵节点
由于不想针对空表做出特殊化处理,因此引入一个哨兵节点,用于在创建sllist的时候占位用
这里的哨兵节点的item无所谓,仅仅是占位用的
后面的操作也需要针对哨兵节点的引入做出更改,这里的哨兵节点仅仅用于占位和监测,对于链表的数据没有任何的影响和含义
- 作者:昊卿
- 链接:hqhq1025.tech/article/cs61b/lec5
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。