单链表的逆置、单链表中的环、单列表删除倒数第N个节点、俩个有序链表的合并、求链表的中间节点

本文详细介绍了单链表的五种常见操作:逆置链表,通过双指针法查找链表中的环,删除倒数第N个节点,合并两个有序链表以及找到链表的中间节点。提供了相关代码实现,并对每个操作进行了步骤解析。
摘要由CSDN通过智能技术生成

单链表的逆置

1->2->3->4->5
5->4->3->2->1
首先我们定义三个指针h在这里插入图片描述、p、q;
灵魂画手
首先
head是头节点
p = head->next;
q = p->next;(head->next->next)
然后先将head->next = NULL;因为1逆置完是尾节点
p->next = head; 让2 ->next = 1
然后head = p; head现在指2了
p = q; p 现在指3了。
q = q->next ; q现在指4了。
变成了俩个链表
2->1
3->4->5
重复上面的操作就好了
下面是代码

head->next = NULL
p = head->next;
q = p->next;
while(q) {
p ->next = head;
head= p;
p = q;
q = q->next;
}
p->next = head;
此时p是头节点5;

查找单链表中的环

双指针法。
俩个指针,一个指针每次走俩步,一个指针每次走一步,如果存在环,则走俩步的最终会追上走一步的

bool hasCycle(struct ListNode *h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值