const first = document.querySelector('.listing');
const tag = 'p';
const arr = [...'ABCDEF'];
Обратный порядок не нужен:
first.after(...arr.map(n => {
const el = document.createElement(tag);
el.innerHTML = n;
return el;
}));
// или
first.replaceWith(first, ...arr.reduce((acc, n, i) => (
(acc[i] = document.createElement(tag)).innerHTML = n,
acc
), []));
// или
arr.reduce((prev, n) => (
prev.insertAdjacentElement('afterend', document.createElement(tag)),
prev.nextSibling.innerHTML = n,
prev.nextSibling
), first);
// или
const parent = first.parentNode;
const nodes = parent.childNodes;
arr.forEach(function(n) {
const el = document.createElement(tag);
el.innerHTML = n;
parent.insertBefore(el, nodes[++this[0]]);
}, [ Array.prototype.indexOf.call(nodes, first) ]);
// или
first.insertAdjacentHTML(
'afterend',
arr.map(n => `<${tag}>${n}</${tag}>`).join('')
);