Так это список называется, что ли? или deck?
В общем как-то так:
(указатель на следующий элемент)(сам элемент)(указатель на ещё следующий эелемент)(ещё элемент)(..)(..)(NULL)Правда, по одному символу хранить в такой конструкции еще менее экономно, чем в вашем стеке (особенно на 64-битной системе

). А вот строки символов — очень даже ничего.
Можно еще использовать ASCIIZ-строки. UTF-8 в них тоже можно записывать. Но
это не очень эффективно.
Ещё можно использовать char* array[]; — это как раз массив строк.
НО!
Во-первых, в Плюсах же должно быть какое-то сто раз обмусоленное решение для таких вещей.
Во-вторых, подобные вещи разжеваны в учебниках 100500 раз. Мне кажется, именно в вашем случае изобретать велосипед — 100% терять время.