Рассматривали ли вы использовать другую структуру данных.Стек действительно не предназначен для этого.Тем не менее, я не буду doochebag и не отвечу на ваш вопрос.
На первый взгляд, ваш код логически корректен, если вы реализуете свой стек со связанным списком и добавляете в негоэлемент во главе списка.Проблема с вашим кодом в том, что temp равен нулю в тот момент, когда он покидает цикл while.Попытка получить доступ к нулевому указателю является ошибкой.
Если вы измените условие while для использования temp-> ниже! = NULL, тогда temp будет указывать на допустимый элемент перед выходом из цикла while.
bool Stack::bot(StackItemType& stackBottom){
if (isEmpty()) return false;
StackItems *temp = top;
while (temp->below != NULL) {
temp = temp->below;
}
stackBottom = temp->item;
return true;
} // end bottom