Поиск общих черт и создание абстракций - один из самых ценных навыков для программиста. Поскольку вы все еще учитесь, я бы посоветовал вам сделать следующее:
(1) Реализуйте стек для этой другой структуры. Да, это двойная работа, но на вашем этапе каждая рабочая программа имеет значение. Накапливает опыт.
(2) Сравните программы. Какие части у них общего? Какие части отличаются? Ваша цель - отделить части, которые являются общими, от частей, которые отличаются. Какие средства используют эти две группы для общения? Части, которые у них общие, попадают в одну часть вашей системы (stack.h / stack.c), а части, которые отличаются, - в свои собственные файлы (account.h / c, person.h / c и т. Д.) , И часть, в которой вы их объединяете, должна включать в себя stack.h и параметризующую сущность.
(3) Попытайтесь найти все возможные способы, которые вы знаете, что язык предлагает, которые вы можете использовать для реализации функциональности абстрактной структуры. Сначала всегда кажется, что есть только один путь, но для каждой нетривиальной проблемы всегда есть несколько подходов. В случае стека, используя стандартный C, например, zou может использовать указатели void, вы можете использовать макросы препроцессора, вы должны изучить вставку токенов, вы можете использовать указатели на функции плюс указатели структуры и т. Д.
(4) Реализуйте как можно больше из них. Опять же, это для обучения. В С так много ловушек, и чем раньше вы столкнетесь с ними, тем лучше.
(5) После того, как вы перечислили и реализовали все эти различные подходы, вы должны оценить их: какой из них был наиболее простым в использовании? Какой из них был проще всего реализовать? Какой из них самый быстрый? Какой из них легче всего отладить?