单链表的删操作

第一种情况:在链表中删除一个节点,删除一个节点,首先要找到要被删除节点的前驱节点,然后把这个前驱节点的 next指针指向被删除节点的下一个节点。这样就能把被删除节点从链表中摘除了。

Go 复制代码
//还是先创建一条单链表
head := createLinkedList([]int{1,2,3,4,5})

//删除第四个节点,首先找到前驱节点
p := head
for i := 0; i < 2; i++ {
p = p.next
}

p.next = p.next.next

第二种情况:在单链表尾部删除元素

Go 复制代码
// 创建一条单链表
head := createLinkedList([]int{1, 2, 3, 4, 5})

// 删除尾节点
p := head
// 找到倒数第二个节点
for p.next.next != nil {
    p = p.next
}

// 此时 p 指向倒数第二个节点
// 把尾节点从链表中摘除
p.next = nil

第三种情况:在单链表头部删除元素

Go 复制代码
// 创建一条单链表
head := createLinkedList([]int{1, 2, 3, 4, 5})

// 删除头结点
head = head.Next

// 现在链表变成了 2 -> 3 -> 4 -> 5
相关推荐
冻柠檬飞冰走茶4 分钟前
PTA基础编程题目集 7-34 通讯录的录入与显示(C语言实现)
c语言·开发语言·数据结构·算法
zander2588 分钟前
LeetCode 79. 单词搜索
算法·深度优先
老洋葱Mr_Onion19 分钟前
【C++】高精度模板
开发语言·c++·算法
脚踏实地皮皮晨1 小时前
003003002_WPF Grid 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
aaaameliaaa9 小时前
字符函数和字符串函数
c语言·笔记·算法
城管不管10 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
月疯10 小时前
二分法算法(水平等分图形面积)
算法
豆瓣鸡11 小时前
算法日记 - Day3
java·开发语言·算法
白白白小纯11 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
Achou.Wang11 小时前
深入理解go语言-第5章 并发编程——Go的灵魂
大数据·算法·golang