用js创建一个单链表,删除这个单链表倒数第 k 个结点。
时间: 2023-06-06 18:05:53 浏览: 128
好的,这是一个编程问题,我可以为您提供解决方法:
可以先定义一个链表节点类,并初始化节点数据:
```javascript
class ListNode {
constructor(val) {
this.val = val;
this.next = null;
}
}
```
其次,可以编写一个函数来构建这个单链表:
```javascript
function buildList(arr) {
let dummy = new ListNode(null);
let curr = dummy;
for (let i = 0; i < arr.length; i++) {
curr.next = new ListNode(arr[i]);
curr = curr.next;
}
return dummy.next;
}
```
接着定义一个函数来删除倒数第k个节点:
```javascript
function removeKthFromEnd(head, k) {
let fast = head;
for (let i = 0; i < k; i++) {
fast = fast.next;
}
let slow = head;
while (fast && fast.next) {
fast = fast.next;
slow = slow.next;
}
slow.next = slow.next.next;
return head;
}
```
最后,可以在主函数中测试这个单链表的构建和倒数第k个节点的删除:
```javascript
let arr = [1, 2, 3, 4, 5];
let k = 2;
let head = buildList(arr);
console.log(removeKthFromEnd(head, k));
```
输出结果为:`{val: 1, next: { val: 2, next: { val: 3, next: { val: 5, next: null } } } }`,即删除了倒数第2个节点4。
阅读全文