链表内指定区间反转 js
时间: 2025-02-23 17:29:05 浏览: 47
### JavaScript 实现链表指定区间反转
对于在JavaScript中实现链表内指定区间的反转,可以采用迭代的方式完成这一操作。此过程涉及遍历链表找到起始位置`m`之前的一个节点以及结束位置`n`处的节点,在这两个边界之间执行局部反转逻辑。
#### 定义链表结构体
首先定义单向链表的数据结构:
```javascript
class ListNode {
constructor(val) {
this.val = val;
this.next = null;
}
}
```
#### 编写反转函数
编写用于反转特定区间[m, n]内的链表结点顺序的函数如下所示:
```javascript
function reverseBetween(head, m, n) {
if (!head || !head.next || m === n) return head;
let dummy = new ListNode(-1);
dummy.next = head;
let preMNode = dummy;
for (let i = 0; i < m - 1; ++i) { // 找到第m-1个节点
preMNode = preMNode.next;
}
let startReverse = preMNode.next;
let then = startReverse.next;
for (let i = 0; i < n - m; ++i) { // 开始翻转中间部分
startReverse.next = then.next;
then.next = preMNode.next;
preMNode.next = then;
then = startReverse.next;
}
return dummy.next;
}
```
这段代码通过创建一个虚拟头节点来简化处理边界条件的情况[^4]。当输入参数满足特殊情况时(比如空列表或无需改变),直接返回原始头部指针;否则按照上述流程逐步调整指向关系直至达到预期效果。
阅读全文
相关推荐











