Сравнительные языки программирования с Кристоффером Хебертом

Что такое динамическая структура?

Динамические структуры или структуры динамических данных могут удалять или добавлять память по мере необходимости во время выполнения. Типичными примерами являются связанные списки, кучи, стеки, очереди и деревья.

Статическая память
Статическая память означает, что размер памяти фиксирован и определяется при компиляции. Представьте себе комнату с 3 ящиками. Вы заполняете 3 ящика и больше не можете добавлять предметы в эту комнату. В таких языках, как C++, структура данных Array имеет фиксированный размер. Вектор — это массив динамической длины в C++.

// Compilation
// Array
let x = Array(3)
console.log(x.length)
// returns 3
x[999]
// returns undefined, because index does not exist

Динамическая память
Динамическая память означает, что память может увеличиваться или уменьшаться во время выполнения кода. Представьте себе комнату, заполненную 3 ящиками, вы можете добавлять и убирать ящики по мере необходимости. Вы заполняете 3 коробки и добавляете еще 3, всего 6 коробок. Это поведение массива по умолчанию в Node.js.

// Compilation
// Dynamic Array
let x = []
console.log(x.length)
// returns 0
// Runtime
x.push(1)
x.push(2)
x.push(3)
console.log(x.length)
// returns 3

Примеры кодирования

Следующий код реализует упрощенный связанный список на разных языках кодирования. Однако связанные списки — это структуры данных, присущие Java и C++.

C++

Ява

Node.js

Питон