Files
freeCodeCamp/curriculum/challenges/ukrainian/10-coding-interview-prep/data-structures/create-a-stack-class.md
2024-06-11 19:02:29 +02:00

4.0 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d8250367417b2b2512c5f Створіть клас Stack 1 301633 create-a-stack-class

--description--

В останньому розділі ми розібрали, що таке стек і як можна його представити за допомогою масиву. У цьому розділі ми створимо власний клас Stack. Хоча його й можна створити за допомогою масивів, все ж іноді краще обмежити контроль, який властивий стекам. Окрім методів push та pop, стеки мають й інші корисні методи. Додамо до нашого класу Stack такі методи: peek, isEmpty та clear.

--instructions--

Напишіть метод push, який додає елемент зверху стека; метод pop, який видаляє та повертає елемент, що знаходиться зверху стека; метод peek, який переглядає верхній елемент стека; метод isEmpty, який перевіряє, чи стек порожній; метод clear, який видаляє всі елементи зі стека. Зазвичай стеки не мають цього методу, але ми додали допоміжний метод print, який друкує колекцію на консолі.

--hints--

Клас Stack повинен мати метод push.

assert(
  (function () {
    var test = new Stack();
    return typeof test.push === 'function';
  })()
);

Клас Stack повинен мати метод pop.

assert(
  (function () {
    var test = new Stack();
    return typeof test.pop === 'function';
  })()
);

Клас Stack повинен мати метод peek.

assert(
  (function () {
    var test = new Stack();
    return typeof test.peek === 'function';
  })()
);

Клас Stack повинен мати метод isEmpty.

assert(
  (function () {
    var test = new Stack();
    return typeof test.isEmpty === 'function';
  })()
);

Клас Stack повинен мати метод clear.

assert(
  (function () {
    var test = new Stack();
    return typeof test.clear === 'function';
  })()
);

Метод peek має повернути верхній елемент стека.

assert(
  (function () {
    var test = new Stack();
    test.push('CS61');
    test.push('CS50');
    return test.peek() === 'CS50' && test.peek() === 'CS50';
  })()
);

Метод pop має видалити та повернути верхній елемент стека.

assert(
  (function () {
    var test = new Stack();
    test.push('CS61');
    test.push('CS50');
    return test.pop() === 'CS50' && test.pop() === 'CS61';
  })()
);

Метод isEmpty має повернути true, якщо стек порожній.

assert(
  (function () {
    var test = new Stack();
    return test.isEmpty();
  })()
);

Метод clear має видалити всі елементи зі стека.

assert(
  (function () {
    var test = new Stack();
    test.push('CS61');
    test.push('CS50');
    test.clear();
    return test.isEmpty();
  })()
);

--seed--

--seed-contents--

function Stack() {
  var collection = [];
  this.print = function() {
    console.log(collection);
  };
  // Only change code below this line

  // Only change code above this line
}

--solutions--

class Stack {
  constructor() {
    this.collection = [];
  }
  print() {
    console.log(this.collection);
  }
  push(val) {
    this.collection.push(val);
  }
  pop() {
    return this.collection.pop();
  }
  peek() {
    return this.collection[this.collection.length - 1];
  }
  isEmpty() {
    return this.collection.length === 0;
  }
  clear() {
    return (this.collection.length = 0);
  }
}