用js创建一个单链表,在这个单链表中值为 x 的结点之后插入一个新结点,如果这个结点不存在,则将这个结点插入到单链表的最后位置上。
时间: 2023-06-11 22:06:58 浏览: 101
可以按照以下步骤创建单链表并在指定位置插入新结点:
1. 定义链表结点的构造函数,包括结点的值和下一个结点的引用。
2. 定义链表的构造函数,包括链表的头结点引用和链表长度。
3. 实现链表的插入方法,首先判断链表是否为空,如果为空,则将新结点设置为链表的头结点;如果不为空,则遍历链表,找到值为 x 的结点并在其后面插入新结点,如果找不到则将新结点插入到链表的末尾。
以下是示例代码:
```javascript
// 定义链表结点的构造函数
function ListNode(val) {
this.val = val;
this.next = null;
}
// 定义链表的构造函数
function LinkedList() {
this.head = null;
this.length = 0;
}
// 实现链表的插入方法
LinkedList.prototype.insertAfter = function(x, val) {
// 创建新结点
var newNode = new ListNode(val);
// 如果链表为空,则将新结点设置为头结点
if (this.head === null) {
this.head = newNode;
} else {
// 遍历链表,找到值为 x 的结点并在其后面插入新结点
var currNode = this.head;
while (currNode !== null) {
if (currNode.val === x) {
newNode.next = currNode.next;
currNode.next = newNode;
this.length++;
return;
}
currNode = currNode.next;
}
// 如果找不到值为 x 的结点,则将新结点插入到链表的末尾
currNode = this.head;
while (currNode.next !== null) {
currNode = currNode.next;
}
currNode.next = newNode;
}
this.length++;
};
```
使用示例:
```javascript
// 创建一个单链表
var list = new LinkedList();
// 插入一些结点
list.insertAfter(null, 1); // 在链表末尾插入结点
list.insertAfter(1, 2); // 在值为 1 的结点后插入结点
list.insertAfter(3, 3); // 在链表末尾插入结点,因为找不到值为 3 的结点
// 遍历链表,输出每个结点的值
var currNode = list.head;
while (currNode !== null) {
console.log(currNode.val);
currNode = currNode.next;
}
```
阅读全文