链表的常见操作
1.链表的反转
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULLfunc reverseList(head *ListNode) *ListNode {
// 设置前驱节点
var prev = head
// 处理链表为空或只有一个元素的情况
if head == nil {
return head
}
if head.Next == nil{
return head
}
// 设定当前指针
cur := head.Next
for cur.Next != nil{
// 设置后驱指针
post := cur.Next
// 将当前指针的下一跳指向前驱节点
cur.Next = prev
// 将前驱设置为当前节点
prev = cur
// 将当前节点为后驱(后移)
cur = post
// 后驱指针后移
post = post.Next
}
// 处理最后一个节点
cur.Next = prev
// 处理原来的投节点(即当前的尾节点)
head.Next = nil
return cur
}2. 合并两个链表
3. 链表判环
4. 链表的中间节点
5. 删除中间节点
6. 两个链表的第一个公共节点
最后更新于
