YuJian
3 years ago
8 changed files with 142 additions and 0 deletions
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
interface LinkedList { |
||||
value: Number | null; |
||||
next: LinkedList | null; |
||||
} |
||||
|
||||
const toLinkedList = (array: Number[]): LinkedList => { |
||||
let linkedList: LinkedList = { |
||||
value: null, |
||||
next: null, |
||||
}; |
||||
|
||||
const endLength = array.length - 1; |
||||
for (let index = endLength; index >= 0; index--) { |
||||
linkedList = { |
||||
value: array[index], |
||||
next: index === endLength ? null : linkedList, |
||||
}; |
||||
} |
||||
|
||||
return linkedList; |
||||
}; |
||||
|
||||
toLinkedList([1, 2, 3, 4, 5]); |
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
interface LinkedList { |
||||
value: number | null; |
||||
next: LinkedList | null; |
||||
} |
||||
|
||||
class LinkedListQueue { |
||||
private head: LinkedList | null = null; |
||||
private tail: LinkedList | null = null; |
||||
|
||||
private len: number = 0; |
||||
|
||||
add(value: number) { |
||||
if (this.len === 0) { |
||||
this.head = { value, next: null }; |
||||
this.tail = this.head; |
||||
this.len++; |
||||
return; |
||||
} |
||||
|
||||
this.tail!.next = { value, next: null }; |
||||
this.tail = this.tail!.next; |
||||
this.len++; |
||||
} |
||||
|
||||
pop(): number | null { |
||||
if (!this.head || !this.tail) return null; |
||||
|
||||
const popValue = this.head.value; |
||||
this.head = this.head.next; |
||||
this.len--; |
||||
|
||||
return popValue; |
||||
} |
||||
|
||||
get length() { |
||||
return this.len; |
||||
} |
||||
|
||||
get link() { |
||||
return this.head; |
||||
} |
||||
} |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
interface LinkedList { |
||||
value: Number | null; |
||||
next: LinkedList | null; |
||||
} |
||||
|
||||
const reverseLinkedList = (LinkedList: LinkedList) => { |
||||
let preNode: LinkedList | null = null; |
||||
let curNode: LinkedList | null = LinkedList; |
||||
let nexNode: LinkedList | null = LinkedList.next; |
||||
|
||||
while (curNode) { |
||||
curNode.next = preNode; |
||||
|
||||
preNode = curNode; |
||||
|
||||
if (nexNode == null) break; |
||||
curNode = nexNode; |
||||
nexNode = nexNode.next; |
||||
} |
||||
|
||||
return curNode; |
||||
}; |
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
/** |
||||
* @description 使用两个栈实现一个队列 |
||||
* @date 2022-05-11 |
||||
*/ |
||||
|
||||
export class StackQueue { |
||||
private stack1: number[] = []; |
||||
private stack2: number[] = []; |
||||
|
||||
add(value: number) { |
||||
this.stack1.push(value); |
||||
} |
||||
|
||||
popup() { |
||||
if (!this.stack1.length) return; |
||||
|
||||
while (this.stack1.length) { |
||||
const stackValue = this.stack1.pop(); |
||||
this.stack2.push(stackValue!); |
||||
} |
||||
|
||||
const popValue = this.stack2.pop(); |
||||
|
||||
while (this.stack2.length) { |
||||
const stackValue = this.stack2.pop(); |
||||
this.stack1.push(stackValue!); |
||||
} |
||||
|
||||
return popValue; |
||||
} |
||||
|
||||
get length() { |
||||
return this.stack1.length; |
||||
} |
||||
} |
||||
|
||||
// console.time("StackQueue");
|
||||
// const queue = new StackQueue();
|
||||
// for (let index = 0; index < 10000; index++) {
|
||||
// queue.add(index);
|
||||
// }
|
||||
// for (let index = 0; index < 10000; index++) {
|
||||
// queue.popup();
|
||||
// }
|
||||
// console.timeEnd("StackQueue");
|
||||
|
||||
// console.time("ArrayQueue");
|
||||
// const ArrayQueue = [];
|
||||
// for (let index = 0; index < 10000; index++) {
|
||||
// ArrayQueue.push(index);
|
||||
// }
|
||||
// for (let index = 0; index < 10000; index++) {
|
||||
// ArrayQueue.shift();
|
||||
// }
|
||||
// console.timeEnd("ArrayQueue");
|
Loading…
Reference in new issue