面试题答案
一键面试// 链表节点定义
class ListNode<T> {
value: T;
next: ListNode<T> | null;
constructor(value: T) {
this.value = value;
this.next = null;
}
}
// 链表类实现
class LinkedList<T> {
private head: ListNode<T> | null;
constructor() {
this.head = null;
}
add(value: T) {
const newNode = new ListNode(value);
if (!this.head) {
this.head = newNode;
} else {
let current = this.head;
while (current.next) {
current = current.next;
}
current.next = newNode;
}
}
// 迭代器相关代码
[Symbol.iterator](): Iterator<T> {
let current = this.head;
return {
next(): IteratorResult<T> {
if (current) {
const value = current.value;
current = current.next;
return { value, done: false };
}
return { value: undefined, done: true };
}
};
}
}
可以这样使用:
const list = new LinkedList<number>();
list.add(1);
list.add(2);
list.add(3);
for (const num of list) {
console.log(num);
}