スタックの実装方法:
- 配列を使用する方法: JavaScriptの配列は、スタックの実装に適しています。以下は、配列を使用してスタックを実装する例です。
class Stack {
constructor() {
this.stackArray = [];
}
push(element) {
this.stackArray.push(element);
}
pop() {
return this.stackArray.pop();
}
peek() {
return this.stackArray[this.stackArray.length - 1];
}
isEmpty() {
return this.stackArray.length === 0;
}
size() {
return this.stackArray.length;
}
}
// スタックの使用例
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.pop()); // 出力: 3
console.log(stack.peek()); // 出力: 2
console.log(stack.isEmpty()); // 出力: false
console.log(stack.size()); // 出力: 2
- 単方向連結リストを使用する方法: スタックを単方向連結リストで実装する方法もあります。以下は、単方向連結リストを使用してスタックを実装する例です。
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Stack {
constructor() {
this.top = null;
this.size = 0;
}
push(element) {
const newNode = new Node(element);
newNode.next = this.top;
this.top = newNode;
this.size++;
}
pop() {
if (!this.isEmpty()) {
const poppedNode = this.top;
this.top = this.top.next;
this.size--;
return poppedNode.value;
}
return null;
}
peek() {
if (!this.isEmpty()) {
return this.top.value;
}
return null;
}
isEmpty() {
return this.size === 0;
}
getSize() {
return this.size;
}
}
// スタックの使用例
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.pop()); // 出力: 3
console.log(stack.peek()); // 出力: 2
console.log(stack.isEmpty()); // 出力: false
console.log(stack.getSize()); // 出力: 2
キューの実装方法:
- 配列を使用する方法: 配列を使用してキューを実装することもできます。以下は、配列を使用してキューを実装する例です。
class Queue {
constructor() {
this.queueArray = [];
}
enqueue(element) {
this.queueArray.push(element);
}
dequeue() {
return this.queueArray.shift();
}
peek() {
return this.queueArray[0];
}
isEmpty() {
return this.queueArray.length === 0;
}
size() {
return this.queueArray.length;
}
}
// キューの使用例
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
console.log(queue.dequeue()); // 出力: 1
console.log(queue.peek()); // 出力: 2
console.log(queue.isEmpty()); // 出力: false
console.log(queue.size()); // 出力: 2
- 単方向連結リストを使用する方法: キューを単方向連結リストで実装する方法もあります。以下は、単方向連結リストを使用してキューを実装する例です。
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Queue {
constructor() {
this.head = null;
this.tail = null;
this.size = 0;
}
enqueue(element) {
const newNodeは新しいノードを作成し、キューの末尾に追加します。
const newNode = new Node(element);
if (this.isEmpty()) {
this.head = newNode;
this.tail = newNode;
} else {
this.tail.next = newNode;
this.tail = newNode;
}
this.size++;
}
dequeue() {
if (!this.isEmpty()) {
const dequeuedNode = this.head;
this.head = this.head.next;
if (this.head === null) {
this.tail = null;
}
this.size--;
return dequeuedNode.value;
}
return null;
}
peek() {
if (!this.isEmpty()) {
return this.head.value;
}
return null;
}
isEmpty() {
return this.size === 0;
}
getSize() {
return this.size;
}
}
// キューの使用例
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
console.log(queue.dequeue()); // 出力: 1
console.log(queue.peek()); // 出力: 2
console.log(queue.isEmpty()); // 出力: false
console.log(queue.getSize()); // 出力: 2
これらのコード例を使用することで、JavaScriptでスタックとキューを実装することができます。これらのデータ構造は、データの一時的な保持や順序付けに役立ちます。