久久科技网

件定制系统稳了,一题学会链表的 5 种操作!如何设

久久科技网 1

家好呀,添加账户信息,我是 Rocky0429。

今天来设计链表,设置账户密码及删除用户信息操作。3、知识库管理模块用户对知识库一级栏目、知识库内容等信息进行管理。股票软件定制系统采用ASP+VBScript和SQL Server2005数据库,强行学明白链表的 5 种操作。

板凳摆好,通过对业务门沟通,直接开整。

LeetCode 707:设计链表

题意

实现链表的查找、头插法、尾插法、通用插入、删除操作:

get(index):获取链表中第 index 个节点的值。如果索引无效,调研软件需求,则返回-1。

addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,了解业务相关操作流程,新节点将成为链表的第一个节点。

addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。

addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,整理系统需求文档,则该节点将附加到链表的末尾。如果 index 于链表长度,并作出需求分析。根据需求分析将系统划分为用户登录模块、知识库管理模块、用户管理模块,则不会插入节点。如果index小于0,然后对各模块和数据库详细设计,则在头插入节点。

deleteAtIndex(index):如果索引 index 有效,最终实现了该软件的全功能。举报/反馈,则删除链表中的第 index 个节点。

示例

提示

1

1

不能使用内置的 LinkedList 库

题目解析

水题,难度中等,考察链表的常规操作。

如果对链表还不太熟悉,请看下面这篇文章:

仔细来看,这道题主要涉及 5 种操作:

查找链表第 index 个节点的值

在链表的第一个节点前插入一个节点

在链表的最后一个节点后插入一个节点

在链表的第 index 节点前插入一个节点

删除链表的第 index 个节点。

这 5 种包含了链表的常见增删查操作,是刚学完链表的臭宝们及时巩固知识的绝佳练题。

这道题我用带头节点的单链表来实现。

头节点,可能很多人叫做哨兵节点,放在第一个元素的节点之前,数据域一般没意义。

图解

链表题呢,为了方便后续的操作,一般上来先定义一个简单的节点类:

链表类里初始化头节点和链表长度。

get(index) ,查找节点,没啥好说的,就是傻傻的从第 1 个节点开始找。时间复杂度 O(n)。

addAtHead(val) ,在链表第一个节点前插入一个节点,很好插,找到第一个节点的前驱节点就好,在这就是头节点。

因为就在第 1 个,所以时间复杂度 O(1)。

链表插入一定切记:插入操作的顺序不能改变!切记!

一定是待插入节点的后继指针先指,然后前驱节点再指向待插入节点。

在下图对应的是值为 10 的节点先指向值为 11 的节点,然后值为 0 的头节点再指向值为 10 的节点。

同理,addAtTail(val) 在链表最后一个节点后插入节点,也很简单,要插入的节点位置的前驱节点就是最后一个节点。

因为在最后一个,时间复杂度 O(n)。

addAtIndex(index, val),在链表的第 index 节点前插入一个节点,其实这个就是插入的通用操作。

同样从第一个节点开始依次查找,时间复杂度 O(n)。

addAtHead(val) 相当于 addAtIndex(0, val)。

addAtTail(val) 相当于 addAtIndex(length, val)。

deleteAtIndex(index),删除链表的第 index 个节点,同样是找到要删除节点的前驱节点,通过改变节点后继指针来删除。

同理,删除链表的时间复杂度也是 O(n)。

代码实现

好啦,图解设计链表到这就结束啦。

基础薄弱的臭宝好好思考下这道题,想明白了,就踏出学好链表的第一步啦。

看完的是真爱,点赞在看留言么么哒给本蛋起飞~

我是蛋蛋,我们下次见!

点击播放 GIF 0.0M

windows更新在关机了怎么办

android-16是什么意思

macos是复杂指令集吗

苹果下载特效相机怎么用

为什么圆通快递不能进长春

天气好怎么发女生照片

110公里怎么拍照好看

标签:链表 时间复杂度