1.一个单链表如何操作将整个链表进行反转方式一使用Stack栈创建 StackInteger 保存链表结点数据遍历原链表将所有数据入栈再新建结果链表不断弹出栈顶元素尾插进新链表以此完成链表反转。核心代码实现方式二原地反转初始化pre为空、cur指向链表头遍历链表先用temp保存当前结点的后继将当前结点反向指向pre再依次移动pre和cur遍历结束pre就是反转后的链表头实现原地反转。核心代码实现2.判断链表是否有环方式一用Set集合检查链表中是否存在重复的节点对象新建一个HashSet集合从头开始遍历链表每访问一个结点就尝试把结点对象存入集合如果添加失败说明该结点之前访问过链表存在环若遍历走到null结束则链表无环。方式二使用快慢指针设置快慢指针都从头结点出发慢指针每次移动一步快指针每次移动两步若无环快指针先抵达链表末尾若存在环快指针会在环内追上慢指针两指针相遇以此判断链表是否含有环。